Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FibPlus: FibQuery, макрос и загрузка blob, не работает связка 
:(
    Опции темы
Clio
Дата 18.8.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 6.11.2007

Репутация: нет
Всего: нет



Добрый день!

Возникла такая проблема.
Я хочу загрузить файл в блоб поле базы данных,
используя компоненты FIBPlus.
в SQL запросе использую макрос.

Код


     pFIBQuery1.Close();
     pFIBQuery1.SQL.Text:= 'UPDATE PO SET VER=:VER, @@mTZ@'+
     ' WHERE ID=:ID ';

     pFIBQuery1.ParamByName('ID').AsInteger := idField;
      pFIBQuery1.ParamByName('VER').AsString := 'заполняю поле ';

// подставляю в макрос параметр
       pFIBQuery1.ParamByName('mTZ').AsString := 'TZ= :TZ ';
// создаю поток для записи 
     Memory := TMemoryStream.Create();
// далее загружаю файл в поток

// и пробую загрузить поток в базу
       pFIBQuery1.Transaction.Active := true;
       pFIBQuery1.Prepare;
       if Assigned(DataMod.pFIBQuery1.FindParam('TZ')) then
         pFIBQuery1.ParamByName('TZ').LoadFromStream(Memory);
        pFIBQuery1.ExecQuery();
        pFIBQuery1.Transaction.Commit();



Все выполняеться правильно. LoadFromStream(Memory) выполняеться,
но загрузки потока в базу не происходит.

Если в запросе вместо макроса напрямую подставить мой параметр, то выполняеться правильно.
Подскажите, что я не так делаю!



PM MAIL   Вверх
pseud
Дата 18.8.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



так я вставляю БЛОБ в БД paradox:
Код

var
  strm: TMemoryStream;
begin
  with TQuery.Create(Self) do
  try
    DatabaseName := FAppPath;
    SQL.Add('INSERT INTO graphic_storage (content) values (:param1)');

    strm := TMemoryStream.Create;
    try
      Image1.Picture.Graphic.SaveToStream(strm);
      Params.ParamByName('param1').LoadFromStream(strm, ftGraphic);
    finally
      strm.Free;
    end;
    ExecSQL;
  finally
    Free;
  end;
end;


Добавлено через 3 минуты и 18 секунд
предположу, что тебе надо сделать так:
Код

  pFIBQuery1.Close();
  pFIBQuery1.SQL.Text:= 'UPDATE PO SET VER = :VER, TZ = :TZ WHERE ID = :ID ';

  pFIBQuery1.ParamByName('ID').AsInteger := idField;
  pFIBQuery1.ParamByName('VER').AsString := 'заполняю поле ';

  Memory := TMemoryStream.Create;
  try
    // далее загружаю файл в поток
    Params.ParamByName('TZ').LoadFromStream(Memory, ftGraphic);
  finally
    strm.Free;
  end;

  pFIBQuery1.ExecQuery();



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Clio
Дата 18.8.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 6.11.2007

Репутация: нет
Всего: нет



Если я подставляю вместо макроса параметр напрямую, то есть как ты написал,
то у меня все работает правильно.
Но если через макрос, то поток не передается.
Похоже , это баг в FibPlus


PM MAIL   Вверх
Akella
Дата 18.8.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Та вот в том-то и дело, что у него с параметрами всё в норме, а с макросами не очень.
PM MAIL   Вверх
pseud
Дата 18.8.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Akella @  18.8.2009,  15:25 Найти цитируемый пост)
Та вот в том-то и дело, что у него с параметрами всё в норме, а с макросами не очень.

туплю слегка. отпуск знаете ли накладывает свои...


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Akella
Дата 18.8.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Clio, обращайся в техподдержку или к ним на форум.
PM MAIL   Вверх
Clio
Дата 19.8.2009, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 6.11.2007

Репутация: нет
Всего: нет



попытался отправить им описание бага , но мне выдало "Доступ запрещен".
PM MAIL   Вверх
Frees
Дата 19.8.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Код

TFIBMemoField( pFIBQuery1.ParamByName('TZ')).LoadFromStream(Memory)

так?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
WaReZMEN
Дата 19.8.2009, 15:24 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 683
Регистрация: 9.6.2006
Где: Россия, Санкт-Пет ербург

Репутация: нет
Всего: 3



Это не мое дело конечно а зачем Query юзать? Лучше такие вещи через процедуры делать...
PM MAIL ICQ   Вверх
pseud
Дата 19.8.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(WaReZMEN @  19.8.2009,  15:24 Найти цитируемый пост)
Это не мое дело конечно а зачем Query юзать? Лучше такие вещи через процедуры делать...

а Query чем не подошел? он разучился с процедурами работать?


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0511 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.