数据库图像显示问题,求救!!!!!(10分)

  • 主题发起人 主题发起人 gadfly24
  • 开始时间 开始时间
G

gadfly24

Unregistered / Unconfirmed
GUEST, unregistred user!
我用access,表中的一个字段用来存储图片,设为‘ole对象’,存了一张位图,
可是不知道怎么显示,用dbimage设置好了datafield,可运行时不显示,
有时提示“位图无效”,其他字段能显示。(动态表)
dbmemo1.datafield:=’内容’;
dbmemo2.datafield:=’答案’;
dbimage1.dataField:=’题图’;
dbimage2.dataField:=’答图’;
改用image,用如下代码——
存入:
var
MS: TFileStream;
begin
MS:=TFileStream.Create(OpenpictureDialog1.FileName, fmOpenRead);
Image1.Picture.Bitmap.LoadFromStream(MS);
MS.Free;
。。。。。。。。
var
MS: TMemoryStream;
begin
MS:=TMemoryStream.create;
Image1.Picture.Bitmap.SaveToStream(MS);
MS.Position:=0;
TBlobField(FieldbyName('题图')).LoadFromStream(MS);
这样能从openpicturedialog中导入图片,并能存入库中(库中对应字段内容为“长二进制数据”)!

读出:
var
MS: TStream;
begin
MS:=CreateBlobStream(FieldbyName('题图'),bmRead);
image1.Picture.Bitmap.LoadFromStream(MS);
MS.Free;
........

为什么从库中查询符合条件的纪录时,这个字段总不能显示,image1中什么也没有???

大家快帮忙解决吧,十分感激!!!!
 
看你的代码应该是没问题啊,我的是这样写的一点问题都没有
存:
l_MS :=TMemoryStream.Create;
l_MS.LoadFromFile(OpenDialog1.FileName);
TBlobField(l_DS.FieldByName('Tw_Pic')).LoadFromStream(l_MS);
读取:
TS :=TSTream.Create;
TS :=l_DS.CreateBlobStream(l_DS.FieldByName('Tw_Pic'),bmRead);
Image1.Picture.Bitmap.LoadFromStream(TS);
TS.Free;

你确定你的图片存入数据库了吗?是不是bmp图片,如果不是的话就不能用
Image1.Picutre.Bitmap.LoadFromStream
要用
Image1.Picture.Graphic.LoadFromStream
 
to tianjh007,
我在插入一条纪录时,其他字段都存进去了,‘题图’这个‘ole对象’字段的内容也变成了
‘长二进制数据’,这应该时图片存进去了吧??

还有, Image1.Picture.Graphic.LoadFromStream是不是对所有格式的图片都通用啊???
 
我刚才用graphic试了一下,一运行就死机!
又改回bitmap,读出时image1显示了一次图片,然后就再也反应了!!!

郁闷!!!!!!
 
我原来用过access的ole对象,界面用dbimage,不过我只用了ctrl-c,ctrl-v的方法存储
显示图片,是正常的,没有折腾过其他方法.
 
只用dbimage设个datasource和datafield就好使????

我怎么弄都不行!!!!!!!
郁闷!!!!
 
是可以,给个email,我把那个试验程序发给你.
 
seagullou@mail.china.com
 
你把Dbimage都删掉,然后重新添加一次,重新设置Datasource和datafield,这样试试!

我也遇到过这种问题
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
923
SUNSTONE的Delphi笔记
S
后退
顶部