hur.cn - 华软网

 热门搜索

想利用freeform形式的数据窗口将图片保存到数据库中,并且仍然利用freeform形式的数据窗口将图片显示出来。。怎么实现????

  作者:未知    来源:网络    更新时间:2018/6/13
表结构如下:
 student表------------------------------------
          |字段名  |    类   型     |  长度  |
          ------------------------------------
          |  id    |    integer     |        |
          ------------------------------------
          | name   |    varchar     |   10   |
          ------------------------------------
          | photo  |  long  binary  |        |
         -------------------------------------
现在就想利用freeform形式的数据窗口将图片保存到photo字段中。。。同样也是freeform形式的数据窗口将图片在数据窗口中显示出来。。。不知道各位有什么比较好的办法。。。这里显示的数据要求是可以根据用户的检索条件检索出来的。。。
------华软网友回答------
在数据窗口对象加一图片控件试试
------华软网友回复------
1.可以在数据窗口中加oledb 字段

2.图片文件放到硬盘临时文件夹上,选中字段的display as picture 属性来显示图片, 保存时用fileread把图片读进blob变量,然后  用 updateblob来更新到数据库
------华软网友回复------
selectblob aa into :aa from table
------华软网友回复------
这样的问题我回答不少了:参考一下
1、保存到数据库
首先必须先存在记录,然后再把图片存到记录中的PHOTO字段中
                 long ll_filelen
int li_filenum,li_loops,li_counter
blob lb_read,lb_picture
string ls_photofile='aaa.jpg',ls_no//把目录下的aaa.jpg保存到PHOTO字段中
ls_no=dw_1.getitemstring(dw_1.getrow(),'no')//得到编号
ll_filelen=filelength(ls_photofile)
li_filenum=fileopen(ls_photofile,streammode!,read!,lockread!)
//ÅжÏͼƬÎļþÊÇ·ñ´óÓÚ32765×Ö½Ú£¬´Ó¶øµÃµ½Ñ­»·´ÎÊý
if ll_filelen > 32765 then
li_loops=((ll_filelen - 1)/32675)+1
else
li_loops=1
end if
//¶ÁÎļþ
for li_counter=1 to li_loops
fileread(li_filenum,lb_read)
lb_picture=lb_picture+lb_read
next
fileclose(li_filenum)
//ÏÔʾͼƬ
//p_1.setpicture(lb_picture)
//дÈëÊý¾Ý¿â
sqlca.autocommit=true
updateblob t_health
set picture=:lb_picture
where no = :ls_no;//按编号保存
if sqlca.sqlnrows>0 then
commit;
                   else
                            rollback
                  end if

2、显示photo
Blob lb_pic,lb_write
Long ll_length
Int li_c,li_i,li_fileNum,li_qs,li_len,li_mod
string ls_filename,ll_no


selectblob picture
into :lb_pic   //blob变量
from t_health
where no= :select_no;//按编号查询photo

ll_length = Len(lb_pic)
IF ll_length<1 THEN RETURN

li_c = ll_length/32765
li_mod = Mod(ll_length,32765)
IF li_mod>0 THEN li_c++

ls_filename = "ggg.jpg" //生成图片文件
li_FileNum = FileOpen(ls_filename,StreamMode!,write!,lockWrite!,replace!)
FOR li_i=1 to li_c
li_qs = (li_i - 1) * 32765 + 1
IF li_i<li_c THEN
li_len = 32765
ELSE
li_len = li_mod
END IF
lb_write = blobmid(lb_pic,li_qs,li_len)
FileWrite(li_fileNum,lb_write)
NEXT
fileclose(li_filenum)
dw_1.modify("p_1.filename='ggg.jpg'")//显示图片



------华软网友回复------
乱码可以删除
------华软网友回复------
to  lzheng2001(1加1)
能不能再说的清楚一些。。。在数据窗口中添加ole db字段然后就是进行一些相关的定义。。比如是哪个表的什么字段==
但是我始终没有找到有关于字段属性的有display as picture的这个属性啊。。。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。