PB中数据库字段中存取图片的实例

最近有些网友问及在数据库的字段来存取图片,下面我将曾经做的一个实例放在下面,希望能给大家有帮助.

建一个表,表结构如下:

id numberic 8,img_text varchar 20,picture image . id为主键

在PB中新建一个窗口,保存为w_image_test,在窗口中放置一个DW控件dw1,一个IMAGE控件p_1,3个按钮cb_1,cb_2,cb_3,分别是浏览、更新、退出,如下图所示:

在窗体的open事件中,代码如下:

dw_1.settransobject(sqlca)
dw_1.retrieve()


在dw_1的clicked事件中

if row >0 then
long ll
ll=this.object.id[row]
ll_id=ll
wf_display_image(ll)
end if


在dw_1的retrieveend事件中

if rowcount >0 then
this.scrolltorow(1)
long ll
ll=this.object.id[1]
ll_id=ll
wf_display_image(ll)
end if

建一个函数wf_display_image,参数为as_id 类型numeric

Blob Emp_id_pic
SELECTBLOB picture
INTO :Emp_id_pic 
FROM img_test
WHERE id=:as_id
;
if isnull(len(emp_id_pic)) or len(emp_id_pic)=0 then 
else
p_1.SetPicture(Emp_id_pic)
end if

 

在cb_1的clicked事件中

openwithparm(w_picture,'1',parent)
gs_commodity s_return
s_return=message.powerobjectparm
string ls_filename
ls_filename=s_return.picture_name
is_filename=ls_filename
//(以上代码中引用了一个结构,结构中picture_name 类型为string,可以不用结构,直接返回一个字符串。)


在cb_2的clicked事件中

 

UPDATEBLOB img_test SET picture = :iEmp_id_pic
WHERE id = :ll_id;
IF sqlca.SQLNRows > 0 THEN
COMMIT ;
messagebox('a','ok')
Else
messagebox('b','cancel')
end if


再新建一个窗体,用于查找要保存的图片文件,将新窗体保存为w_picture,在该窗体中放上一个listbox控件lb_file_list,一个image控件p_picture,2个按钮cb_ok,cb_cancel,分别为确定及取消。如下图所示:

在窗体的open事件中

 

lb_file_list.dirlist("c:\picture\*.jpg",0)
在lb_file_list的selectionchanged事件中
is_update_type='1'
is_newfilename=lb_file_list.selecteditem()
p_picture.picturename="c:\picture\" + is_newfilename
在cb_ok的clicked事件中
gs_commodity s_return
s_return.commodityid=is_commodityid
s_return.picture_name=is_newfilename
s_return.update_type=is_update_type
long l_1
l_1 = closewithreturn(parent ,s_return)


在cb_cancel的clicked事件中

 

is_update_type='0'
gs_commodity s_return
s_return.commodityid=is_commodityid
s_return.update_type=is_update_type
closewithreturn(parent,s_return)



原文:https://blog.csdn.net/lijianhe043/article/details/6874255 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值