我使用的是PB9.0+ORACLE
在表sb_zmsb_jb中有blob字段sbtx用来保存图片
实例变量 blob tx,b_tx
数据窗口控件dw_jb,数据窗口dw_zmsb_jb内有一图片控件p_1,按纽cb_sbtx
在数据窗口控件dw_jb的buttonclicked事件中代码如下:
string ls_path,ls_file
long fh,ll_filelen,li_pos,li_cnt,li_nr,sjtx,ll_sjtx
//选择图片
fh=getfileopenname("select file",+ls_path,ls_file,"jpg",&
+"jpg files(*.jpg),*.jpg,"+"gif files(*.gif),*.gif")
if len(ls_path)=0 then
f_mess("请重新选择图形!")
return
end if
this.object.p_1.Filename=ls_path
IF fh =1 THEN
ll_filelen=filelength(ls_path)
if ll_filelen>32766 then
li_pos=((ll_filelen - 1)/32766) + 1
li_nr=fileopen(ls_path,streammode!,read!,lockread!)
else
li_pos=1
end if
for li_cnt=1 to li_pos
sjtx=FileRead(fh, tx)
b_tx=b_tx + tx
ll_sjtx=ll_sjtx + sjtx
fileseek(li_nr,ll_sjtx,frombeginning!)
next
fileclose(li_nr)
END IF
//完成对外部图片的读入
----以上代码是成功实现的
在界面上另有保存按纽,代码
//保存图片
UPDATEBLOB sb_zmsb_jb SET sbtx= :b_tx
WHERE zczh=:ls_zczh
USING sqlca ;
IF sqlca.SQLNRows > 0 THEN
COMMIT USING sqlca ;
f_mess("图片保存成功!")
END IF
问题就出在保存上了,所有代码运行正常也提示图片保存成功!可是表中就是没有图片的数据?但如果把blob字段改为long raw就可以了,不知道原因出在哪里了,请大家帮个忙。另外该如何从数据库中将图片读到数据窗口中的p_1控件中,
selectblob sbtx into :blb_tmp
from sb_zmsb_jb
where zczh=:ls_zczh
using sqlca;
使用dw_jb.object.p_1.setpicture(blb_tmp)或dw_jb.object.p_1.Filename=blb_tmp都无法实现,为何?该如何处理?