数据窗口上有一个图片控件,怎么显示从数据库读出来的blob型的图片?
数据窗口dw_1,图片控件dw_1.object.p_1
从数据库读出来的blob为lb_image.
谢谢!
------解决方案--------------------
刚写的
http://blog.csdn.net/xys_777/archive/2009/11/27/4885820.aspx
------解决方案--------------------
字段类型Image(不同数据库不同,如果没有再查找blob等类型),然后使用如下编程套路:
读取:
这样的字段不能放在数据窗口的Detail节中,通常用户点击某行数据,获取该行的主键信息,以该信息为条件检索图片信息。比如,主键为id,图片保存在zp字段中:
在dw_1的Clicked事件中编写如下程序:
String ls_id
blob lb_zp
if Row < 1 then return
ls_id = This.GetItemString(Row,'id')
selectblob zp into :lb_zp
from employee where id = :ls_id;
if sqlca.SQLNRows > 0 then //判断是否读取成功
p_1.SetPicture(lb_zp) //显示在picture控件p_1中
end if
向数据库中保存图片的脚本如下:
首先需要明确:
1)事务对象需要设置AutoCommit属性为True
2)使用UpdateBlob语句修改,一次只能修改一条记录
3)在使用UpdateBlob之前数据应该已经存在。
基于上述原因,通常在卡片式的录入界面中(通常使用Freedom类型的数据窗口)让用户输入照片。数据保存后,马上调用以下脚本处理图片:
blob lb_zp
integer li_file
li_file = FileOpen(p_1.filename, StreamMode!)
IF li_file <> -1 THEN
FileRead(li_file,lb_zp)
FileClose(li_file)
UPDATEBLOB Employee SET zp = :lb_zp
WHERE id = :ls_id;
END IF
IF sqlca.SQLNRows > 0 THEN
COMMIT;
END IF