当前位置:首页>> PowerBuilder>> PB技巧

全文搜索

精华导读

·EasyERP2004 制造行业通用性ERP管理系统
·PB中表的修改对数据窗口和报表的影响的解决办法
·在PB中实现Word内容的替换
·office xp风格菜单基本版
·用PB制作outlook界面源程序(非原来的老外版本)(
·将所见dw内容(包括计算字段)输出到execl中
·ERP在中国应用面临的问题
·PB中使用FORMULA ONE(实例篇
·控制打印机的动态库,兼容win98/98/me/nt2000/xp
·易佳自定义报表系统
·用例驱动的需求过程实践

最新发表

·软件项目的需求开发与管理
·需求分析之Wiki定义
·软件项目需求管理简述
·项目为什么总是做不完?范围管理要界定
·软件项目获取用户需求的沟通技巧
·高级可跟踪性——基本可跟踪性
·高级可跟踪性——满足论据
·做IT项目要知己知彼
·需求的问题,是一个简单的问题
·企业业务软件工程项目和商业软件产品项目上项目需求管理的不同
·项目中如何使用范围变化管理
·范围管理不佳引致项目陷入困境
·企业软件工程项目和商业软件项目需求管理的不同
·工程项目需求获取的几种方法及其适用环境
·认识软件估算
·我的软件10年:需求的变化就是创新的机会
·《IT项目管理》总结:项目范围管理
·需求变更的代价
·怎样从容应对客户的需求反复?

PB中保存图片到数据库

文章来源:互联网络 文章编辑:admin 添加时间:2004-12-8

 
 
//****************************************************************
“选择”按钮代码:
lb_image = gf_open_pic(p_1,lb_image)
p_1.setpicture(lb_image)

//***************************************************************
“清除”按钮代码:
p_1.picturename = ''
p_1.picturename = ''//(需要两次)
setnull(lb_image)

//***************************************************************
函数gf_open_pic:
//////////////////////////////////////////////////////////////////
//Add by Jeffrey Jiang on 2001.11.13
//选择图片
/////////////////////////////////////////////////////////////////
//Modfiy by Jeffrey Jiang on 2001.11.15
//当图片字节大于32765时,循环读图片
/////////////////////////////////////////////////////////////////

integer li_file,li_ret,loops,i
string ls_file,ls_path
blob lb_small
long flen,bytes_read,new_pos

//search the file
li_ret = getfileopenname("选择图片文件",ls_path,ls_file, &
"BMP","图片文件(*.BMP),*.BMP")
if li_ret = 1 then
p_1.picturename = ''
p_1.picturename = ''
setnull(lb_image)
if li_file <> -1 then
// Set a wait cursor
setpointer(hourglass!)

flen = filelength(ls_file)
li_file = fileopen(ls_path,streammode!,read!,lockread!)
// Determine how many times to call FileRead
if flen > 32765 then
if mod(flen,32765)=0 then
loops = flen/32765
else
loops = (flen/32765) + 1
end if
else
loops = 1
end if
// Read the file
new_pos = 1
for i = 1 to loops
bytes_read = fileread(li_file,lb_small)
if i = 1 then
lb_image = lb_small
else
lb_image = lb_image + lb_small
end if
next
// close the file
fileclose(li_file)
end if
end if
return lb_image

//***************************************************************
保存按钮代码:
UPDATEBLOB "person" SET "person"."PHOTO" = :lb_image WHERE "person"."C_ID" = :ls_c_id USING SQLCA;
IF sqlcadoor.SQLNRows > 0 THEN
commit using sqlca;
END IF

//***************************************************************
显示图片:
lb_image = f_select_pic(ls_c_id)
p_1.setpicture(lb_image)

//***************************************************************
f_select_pic函数:
blob lb_image
setnull(lb_image)
selectblob "person"."PHOTO" into:lb_image from "person" where "person"."C_ID"=:ls_c_id using sqlca;
return lb_image

//**************************************************************
有什么疑问可以咨询我:
昕晨 :

EMAIL:jiangjeffrey@163.com
环境:PB65
数据库:sql anywhere 5.5
//数据库的字段根据自己的需要更改!!!!!
//*************************************************************

//*****************************************************************************

有人问到,如何清除数据库中的图片而不删除该条记录,操作如下:

保存图片到数据库要用UPDATEBLOB:
UPDATEBLOB "M" SET "M"."PHOTO" = :ib_image WHERE "M"."C_ID" = :ls_c_id ;
只删除图片而不删除记录要用UPDATE:
UPDATE "M" SET "M"."PHOTO" = null WHERE "M"."C_ID" = :ls_c_id ;
(数据库字段根据自己的做更改!)

之前提供的gf_open_pic()函数说明:
由于PowerBuilder提供的fileread()函数每次只能读出字节小于32765的图片,当图片大于32765时,我提供的gf_open_pic()函数循环读图片,传入两个参数p_1(picture),lb_image(blob)

 

[ ]

首页 评论 打印 刷新 返回顶部 关闭
【相关文章】  【相关评论】
目前暂时没有相关文章