Форум: "Базы";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];
ВнизРаботать с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c