Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.28;
Скачать: CL | DM;

Вниз

Работать с BLOB полями в INTERBASE, через IBX компоненты.   Найти похожие ветки 

 
s_ser ©   (2003-06-24 12:25) [0]

Мастера плиз помогите. Как лутше работать с BLOB полями в INTERBASE, через IBX компоненты.


 
Johnmen ©   (2003-06-24 12:38) [1]

Пpиводим пpимepы pаботы с blob-полями (для FIBPlus, для IBX - аналогично).

pFIBDatase1BLOBFIELD - полe типа BLOB датасeта pFIBDatabase1
Чтение из блоб-поля в OleContainer
var S: TStream;
begin
if not pFIBDataset1BLOBFIELD.IsNull then
begin
S:=pFIBDataset1.CreateBlobStream(pFIBDataset1BLOBFIELD, bmRead);
try
OleContainer1.LoadFromStream(S)
finally
S.Free
end;
end;
end;

Запись в блоб-полe из OleContainer (вызываeтся в BeforePost)
var S: TStream;
begin
S:=pFIBDataSet1.CreateBlobStream(pFIBDataSet1BLOBFIELD,
bmReadWrite);
try
OleContainer1.SaveToStream(S)
finally
S.Free
end;
end;


 
s_ser ©   (2003-07-02 13:36) [2]

Та проблема вовсе не в том как запихнуть или потом извлечь от туда данные: если это рисунок то вообще нет никаких проблем, а вот если мы например запихиваем туда *.doc, *.xls,*.rar, то при оьратном заборе данных я получаю полный брет....


 
Johnmen ©   (2003-07-02 13:42) [3]

Приводи код, как запихиваешь и оьратно забираешь.


 
s_ser ©   (2003-07-04 17:01) [4]

Запихиваю так
procedure TfrmScan.SpeedButton_fileClick(Sender: TObject);
var
name,file_name,type_file:String;
i,count_name,current_slash:Integer;
begin
OpenPictureDialog1.Execute;
name:=OpenPictureDialog1.FileName;

count_name:=Length(name);
file_name:=ExtractFileName(name);
type_file:=ExtractFileExt(name);
try
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
except
begin
//
end;
end;
if OpenPictureDialog1.FileName<>"" then
begin
dmMain.Save_Transaction.Active:=false;
dmMain.Save_Transaction.StartTransaction;
dmMain.StoredProc_All.Transaction:=dmMain.Save_Transaction;
dmMain.StoredProc_All.Database:=dmMain.DatabaseKRU;
dmMain.StoredProc_All.StoredProcName:="ADD_LETTER_ARHIV";
dmMain.StoredProc_All.Prepare;
dmMain.StoredProc_All.ParamByName("D_ID_LETTER").Value:=id_later_now;
dmMain.StoredProc_All.ParamByName("D_PAGE_DOC").Value:=1;
dmMain.StoredProc_All.ParamByName("D_NAME_DOC").Value:=file_name;
dmMain.StoredProc_All.ParamByName("D_DOC").LoadFromFile(OpenPictureDialog1.FileName,ftMemo);
dmMain.StoredProc_All.ExecProc;
dmMain.Save_Transaction.Commit;

end;
Query_file.Active:=false;
Query_file.Active:=true;
end;
а забираю обратно так
procedure TfrmScan.DBGrid1DblClick(Sender: TObject);
var
Stream:TStream;
Name:String;
Save: TFileStream;
begin
Stream:=TStream.Create;
Stream:=Query_file.CreateBlobStream(Query_file.FieldByName("DOC"),bmRead);
Name:=Query_file.FieldByName("name_doc").asString;
Query_Save.Active:=false;
Query_Save.Transaction:=dmMain.Read_Transaction;
Query_Save.ParamByName("param_doc").Value:=Query_file.FieldByName("id_doc").Value;
Query_Save.Active:=true;
Stream:=TStream.Create;
Stream:=Query_Save.CreateBlobStream(Query_Save.FieldByName("DOC"),bmRead);
Save:=TFileStream.Create("c:\"+name,fmCreate);
Save.Write(Stream,Stream.Size);
Save.Free;
Stream.Free;
end;
Робовал разные типы полей BLOB



Страницы: 1 вся ветка

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-91865
Феликс
2003-07-10 23:14
2003.07.28
Вопрос по Перлу.


7-91916
Nikkk
2003-05-16 17:06
2003.07.28
Как убрать свою прогу в процессы в WIN2000


9-91611
Аболтус
2003-02-02 23:55
2003.07.28
Рекурсия или цикл!?


14-91835
Rulya
2003-07-02 14:22
2003.07.28
<b>Доступ в и-нет</b>


3-91684
Belkova
2003-07-04 18:47
2003.07.28
Транзакции