当前位置: 代码迷 >> PB >> 请问,数据窗口如何显示blob型的照片
  详细解决方案

请问,数据窗口如何显示blob型的照片

热度:70   发布时间:2016-04-29 10:01:09.0
请教,数据窗口怎么显示blob型的照片?
数据窗口上有一个图片控件,怎么显示从数据库读出来的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

  相关解决方案