![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
BLOB- поля в базах Microsoft [D5, MSSQL, MSAccess]
ДМ © (2002-12-06 07:09:00)Читаю BLOB-поле из базы MS Access (в ней оно представлено, как поле OLE- объекта) в нем записаны различные объекты (документы Word и Excel) при попытке запихать объект в OLEContainer получаю ошибку EOLEError "Invalid stream format"...
BS := TADOBlobStream.Create(ADOTable1BLOBField, bmRead);
OleContainer1.LoadFromStream(BS);
Подскажите пожалуста как с этим бороться...
BlackTiger (2002-12-07 15:31:00) [1]А как они туда попали? Средствами Дельфи или Аксесса?
Дело в том, что сам Аксесс, если использовать стандартную процедуру записи в такое поле ЗАКЛЮЧАЕТ данные в ОБРАМЛЕНИЕ, от которого нужно избавляться (сколько-то байт вначале и в конце самого "объекта"). Столкнулся с этим, когда пытался прочитать картинки, сохраненные в такой базе - сравнивал исходный файл с результатом, сохраненным из базы. Выход был только в записи объекта как поток байтов своим кодом (без обрамлений).
Leran2002 (2002-12-07 10:52:00) [2]procedure TForm1.SaveClick(Sender: TObject);
var
BF:TBlobField;
S:string;
begin
ADOQuery2.Open;
BF:=(ADOQuery2.FieldByName("BlobF") AS TBlobField);
S:=ExtractFilePath(ParamStr(0))+"data2.doc";
// сохраняем Блоб в файл
BF.SaveToFile(S);
// создать из файла
OleContainer1.CreateObjectFromFile(S,false);
ADOQuery2.Close;
end;
Lola (2002-12-06 11:37:00) [3]Попробуй разделить по типам с помощью AnsiLowerCase(Ext)