procedure TfrmHttz.btnShowBlobsClick(Sender: TObject);
var
sFileName :string;
bs:TADOBlobStream;
begin
bs:=TADOBlobStream.Create(TBlobField(frmData.cdsHtyg.fieldByName('原稿内容')),bmRead); //此句出错,显示 InValid Class TypeCast
try
sFileName:=ExtractFilePath(Application.ExeName)+'tmpBlob';
sFileName:=sFileName+'.'+frmData.cdsHtyg.fieldByName('文件类型').AsString;
bs.SaveToFile(sFileName);
OleContainer1.CreateObjectFromFile(sFileName,False);
finally
bs.free;
end;
end;
已经使用了 adoDb,db单元
用 TBlobField(frmData.cdsHtyg.fieldByName('原稿内容')).SaveToFile(sFileName);
可以显示文件内容。
数据库为sql sever 2000
原稿内容 为image 类型字段
var
sFileName :string;
bs:TADOBlobStream;
begin
bs:=TADOBlobStream.Create(TBlobField(frmData.cdsHtyg.fieldByName('原稿内容')),bmRead); //此句出错,显示 InValid Class TypeCast
try
sFileName:=ExtractFilePath(Application.ExeName)+'tmpBlob';
sFileName:=sFileName+'.'+frmData.cdsHtyg.fieldByName('文件类型').AsString;
bs.SaveToFile(sFileName);
OleContainer1.CreateObjectFromFile(sFileName,False);
finally
bs.free;
end;
end;
已经使用了 adoDb,db单元
用 TBlobField(frmData.cdsHtyg.fieldByName('原稿内容')).SaveToFile(sFileName);
可以显示文件内容。
数据库为sql sever 2000
原稿内容 为image 类型字段
bs:=ADOTable1.CreateBlobStream(ADOTable1.FieldByName('原稿内容'),bmRead);
cdsHtyg 是客户端的一个ClientDataSet,连接的是一个adotableto oracle_lover(数据库情人):
运行出错
[Error] : Incompatible types: 'TADOBlobStream' and 'TStream'
procedure TRoomStateFrm.GetImageToList;
Procedure GetImage;
var
vIndex : Integer;
pic:TBitmap;
pStream : TADOBlobStream;
begin
//..
with DataModuleFrm.LSBADOQuery do
begin
if Active then
Active := False;
SQL.Clear;
SQL.Add('Select * From RoomImagewh');
Open;
if RecordCount <> 0 then
begin
//..
First;
vIndex := 0;
bImageList.Clear;
while Not Eof do
begin
pStream:=TADOBlobStream.Create(TBlobField(DataModuleFrm.LSBADOQuery.FieldByName('RoomImage')),bmRead);
Pic:=Tbitmap.Create;
Try
Pic.LoadFromStream(pStream);
BImageList.Insert(vIndex,Pic,Pic);
Inc(vIndex);
Next;
Finally
Pic.Free;
pStream.Free;
end;
end;
end;
Close
end;
end;
begin
GetImage;
RoomStateLView.LargeImages := BImageList;
end;procedure TRoomStateFrm.FormShow(Sender: TObject);
begin
GetImageToList;
end;
pStream:=TADOBlobStream.Create(TBlobField(DataModuleFrm.LSBADOQuery.FieldByName('RoomImage')),bmRead);你的这句和我的语句是一样的,为什么我的不行,因为cdsHtyg 是客户端的ClientDataSet吗?
看来李维的例子没错,
TBlobField(frmData.cdsHtyg.fieldByName('原稿内容')不支持ClientDataSet