Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как запостить файл в поле BLOB для INTERBASE? [D6, IB6.x]


Analitik ©   (2005-09-02 18:13:00) 

ДОбрый день!
Есть проблема: как запостить файл в BLOB-поле в СУБД Interbase (прога на Delphi)?
следующий код работает для MS Access, но не принимается INterbase. Компилятор не ругается, просто ничего не происходит.
код:
var
blob: TStream;
fs : TStream;
begin
           IBTable1.Insert;
           blob := IBTable1.CreateBlobStream(IBtable1.FieldByName('TMP_DOC'),bmWrite);
           try
             blob.Seek(0, soFromBeginning);
             fs := TFileStream.Create('D:\mm.doc', fmOpenRead or fmShareDenyWrite);
             try
               blob.CopyFrom(fs, fs.Size)
             finally
               fs.Free
             end;
           finally
             blob.Free;
             IBTable1.Post;
           end;


Oleg_   (2005-09-29 10:34:00) [1]

->Desdechado ©  

спасибо все стало понятно


Desdechado   (2005-09-28 22:43:00) [2]

то же самое
Query1.Sql.Text :=
  'INSERT INTO testblob ' +
  ' ( ' +
  '  fBlob' +
  ' )' +
  ' VALUES' +
  ' (' +
  ' :ParamBlobField' +
  ')';
Query1.ParamByName('ParamBlobField').DataType := ftBlob;
Query1.ParamByName('ParamBlobField').ParamType := ptInput;
Query1.ParamByName('ParamBlobField').LoadFromFile('MyFile',ftBlob);
Query1.ExecSql;


oleg_   (2005-09-28 22:16:00) [3]

А если через query? то как?


Analitik   (2005-09-09 19:56:00) [4]

Ок, все работает.
Можно было не извращаться с потоками:)
код:
begin
   Database1.Open;
   if Database1.Connected then
     begin
       Table1.Open;
       Transaction1.Active:=true;
       Table1.Insert;
       Table1Field1.LoadFromFile(filename);
       Table1.Post;
       Table1.Close;
       Transaction1.Commit;
     end;
end;

Спасибо за ответы:)


Alexandr   (2005-09-03 07:29:00) [5]

сначата post потом free.
О, так у тебя еще и стрим закрывается до поста?
короче где-то на ibase.ru было на этот счет написано


Desdechado   (2005-09-02 18:54:00) [6]

а транзакцию подтвердить не пробовал?

и что значит "ничего не происходит"? В базу смотрел после выполнения?


Наверх

Титульная страница Поиск, карта сайта Написать письмо