当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > PowerBuliden > 实例代码 > 正文

PB中保存图片

http://www.zk168.com.cn  招考学习网 2006-4-6 13:18:54
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
//****************************************************************
“选择”按钮代码:
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)

-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
·BOG压缩机在液化石油气基地的应用
·LFCB-102型微波分相差动保护的应用
·基于PB6和ORACLE8开发“劳动信息管理系统”
·利用TDC组件实现对WEB页面的交互操作
·关于SBS改性沥青配合比设计及施工技术的探讨
·PowerBuilder的分布式计算技术及其应用
·PowerBuilder和MapInfo的集成开发技术
·基于Visual Basic快速开发现场电视监控系统
·PBX濒临被取代的危机—论程控交换机的生存与发展
·ASP技术访问WEB数据库 2
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>