Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Вниз
Загрузка из BLOB поля в OleContainer Найти похожие ветки
← →
Snip © (2004-11-19 17:31) [0]Привет Всем! Такая проблема, загружаю через поток из BLOB поля IB в поток, а из него в OleContainer, при загрузки в контейнер вылетает ошибка Out of memory. Что такое может быть такое?
← →
Sergey_Masloff (2004-11-19 22:30) [1]>Что такое может быть такое?
В 17 строке посмотри...
На самом деле неплохо глянуть код как ты это делаешь ;-)
← →
Snip © (2004-11-20 13:07) [2]
var
Table: TIBTable;
begin
try
try
Table:=TIBTable.Create(Application);
Table.Database:=DM.IBDatabase;
Table.TableName:="ITEMS";
Table.Open;
Table.Filter:="id = "+IntToStr(Integer(ListView.Selected.Data));
Table.Filtered:=True;
OleContainer.LoadFromStream(Doc.CreateBlobStream(TBLOBField(Table.ieldByName("ole")), bmRead));
except
end;
finally
if Assigned(Stream) then
Stream.Free;
if Assigned(Table) then
Table.Free;
end;
end;
← →
Snip © (2004-11-20 13:08) [3]
if Assigned(Stream) then
Stream.Free;
Лишнее :))))
← →
Snip © (2004-11-20 13:10) [4]Вот, делаю уже так:
var
Table: TIBTable;
begin
try
try
Table:=TIBTable.Create(Application);
Table.Database:=DM.IBDatabase;
Table.TableName:="ITEMS";
Table.Open;
Table.Filter:="id = "+IntToStr(Integer(ListView.Selected.Data));
Table.Filtered:=True;
OleContainer.LoadFromStream(Table.CreateBlobStream(TBLOBField(Table.FieldByName("ole")), bmRead));
except
end;
finally
if Assigned(Table) then
Table.Free;
end;
end;
← →
Johnmen © (2004-11-21 02:29) [5]http://delphimaster.net/view/3-1100439265/
← →
Fran (2004-11-21 12:23) [6]Я делаю так:
1. создать поток
2. записвть в него BLOB
3. сохраняю поток в файл
4. загрузить из файла Ole
5. удаляю файл с диска
загрузить документ в OLE сразу не получается из-за разных Windows-ов и офисов у клиентов, только через файл все работает надежно.
Пример кода:
procedure btnReadBlobClick(Sender: TObject);
var
A : TStream;
B : TMemoryStream;//FIBBlob
begin
// Blob_Ole - OleConteiner
if not (Blob_Ole.State in [osEmpty])
then Blob_Ole.DestroyObject;
try
Screen.Cursor := crHourGlass;
with quGetBlob do begin
Close;
SelectSQL.Clear;
SelectSQL.Add("SELECT BLOBBIN FROM INHFOTO");
SelectSQL.Add("WHERE REC_NO = "+IntToStr(nRecBlob));
Open;
Edit;
A := CreateBlobStream(FieldByName("BLOBBIN"), bmRead);// as TBlobField
A.Position := 0;
B := TMemoryStream.Create;
B.LoadFromStream(A);
B.Position := 0;
B.SaveToFile(gsCurrDirZAGS+"Tmpfiles\"+sFileNameBlob);
B.Position := 0;
Blob_Ole.CreateObjectFromFile(gsCurrDirZAGS+"Tmpfiles\"+sFileNameBlob,False);
Blob_Ole.Visible := True;
Blob_Ole.Hint := sDescBlob+#10#13+"Ôàéë: "+sFileNameBlob;
Close;
end;//with dmMain.quGetBlob
finally
DeleteFile(gsCurrDirZAGS+"Tmpfiles\"+sFileNameBlob);
B.Free;
A.Free;
Screen.Cursor := crDefault;
end;//try
end;//if trvListBlob.Selected.Data <> nil
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c