Форум: "Базы";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
ВнизКак отобразить OLE-поле из таблицы Access? Найти похожие ветки
← →
SnapIn (2005-12-11 13:28) [0]Подскажите пожалуйста, как отобразить OLE-поле (Документ MSWord) из таблицы Access?
Я полагаю, что отображать содержимое поля нужно будет в OleContainer1, а как это содержимое считать из таблицы (ADOTable)?
← →
SnapIn (2005-12-11 13:48) [1]Вот мои попытки:
procedure TForm1.Button1Click(Sender: TObject);
var
AStream: TStream;
Data: Integer;
Begin
AStream := TStream(tbTable1.CreateBlobStream(tbTable1.FieldByName("ole_field"), bmRead));
AStream.Read(Data, SizeOf(Data));
OleContainer1.LoadFromStream(AStream); // <-- Здесь: INVALID STREAM FORMAT
AStream.Free;
end;
← →
sniknik © (2005-12-11 14:13) [2]> OleContainer1.LoadFromStream(AStream); // <-- Здесь: INVALID STREAM FORMAT
а ложил в поле как? если "обратным" от этого методом...то чтото не то. а если в самом Access-е (перетяну документ в поле с проводника) то правильно, Access префикс пишет (92байта) определяющий тип OLE.
← →
sniknik © (2005-12-11 14:25) [3]сорри 82 байта
procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
var
Stream: TMemoryStream;
Pref: Word;
jp: TJPEGImage;
bm: TBitmap;
begin
Stream:= TMemoryStream.Create;
try
TBLOBField(ADODataSet1.FieldByName("ImField")).SaveToStream(Stream);
if Stream.Size <> 0 then begin
Stream.Position:= 0;
Stream.ReadBuffer(Pref, 2);
case Pref of
$4D42: begin
DBImage1.DataSource:= DataSource1;
bm:= TBitmap.Create;
bm.Width:= 121;
bm.Height:= 121;
Image1.Picture.Bitmap:= bm;
bm.Free;
end;
$D8FF: begin
jp:= TJPEGImage.Create;
Stream.Position:= 0;
jp.LoadFromStream(Stream);
Image1.Picture.Graphic:= jp;
jp.Free;
end;
$1C15: begin
Stream.Position:= 82;
Image1.Picture.Bitmap.LoadFromStream(Stream);
end;
end;
end;
finally
Stream.Free;
end;
end;
вот это вот, выделенное читает BMP формат такого вот "затянутого" в аксессе BMP файла в OLE поле. (первые 2 положенные самой програме также через стрим и соответственно без префикса, причем первое подсовывает стандартный DBImage)
← →
SnapIn (2005-12-12 17:55) [4]2 sniknik ©
Ложил туда данные не я... там WORD"овские файлы лежат!
А мне их теперь отобразить нужно... я уже думаю, если твой способ не поможет, может их просто переложить ручками в BLOB-поля Firebird"a?!...
← →
sniknik © (2005-12-12 18:09) [5]> там WORD"овские файлы лежат!
пофигу принцип тот же! префикс или есть или нет, в зависимости от того чем ложиш.
> если твой способ не поможет
это не мой способ, и вообще не готовое решение, это просто попытка показать в чем может быть проблема. (которую ты можеш как проверить так и проигнорировать)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c