在dw中显示图片

图片数据是以blob类型放在数据库中的

1、用picture控件显然不行,因为bitmap要求指定路径!  
  当然,如果每页只显示一个图片用程序脚本可实现!  
      1)读出数据库内blob数据  
      2)写入到窗口中的picture控件  
      3)保存图片到指定的临时文件如aaa.bmp  
      4)在数据窗口中picture的控件指定picturename   =   aaa.bmp  
      总的来说这样还是不太方便  
   
   
  2、用DB   OLE控件可实现,主要还要设置表名、列名、KEY   CLAUSE、OLE   CLASS和CLIENTNAME   expression  
  例如:其中的key   clause则可写id   =   :id  
                      ole   class   则选择   PBrush   画笔图片  
                      classname   expression则写   "object"  
  这里的id指要显示的表相关的ID  
   
   
  建议楼主使用第2种方法

备注:   
  注意图片不要太大,因为保存在数据库中的图片文件读取但对系统性能有影响(如果图片太大),并且使用OLE虽然方便但PB与OLE的兼容性一直受到大家的致疑!     所以所保存的图片不应太大! 

方法一的代码:  
  图片临时存放在图片路径下:  
   
  先读出来的  
  blob     emp_id_pic  
   
  SELECTBLOB   picture  
  INTO     :emp_id_pic  
  FROM   scanimg  
  WHERE   picID   =   :sz_PicID  
  USING   SQLCA   ;  
   
  在临时写入一个路径下:  
  如:  
   
  ll_filelen=len(emp_id_pic)  
  setnull(emp_id_pic)  
  emp_id_pic=as_blob  
   
  ls_server_path="d:/ls"   //临时存放的图片路径  
   
  ls_downfile=ls_server_path  
   
  //计算读文件的次数,不能一次大于32K的数据  
  if   ll_filelen>32766   then    
  if   mod(ll_filelen,32766)=0   then    
  li_loops=ll_filelen/32766  
  else  
  li_loops=(ll_filelen/32766)   +   1  
  end   if  
  else  
  li_loops=1  
  end   if  
  ls_filename=mid(ls_filename,4,len(ls_filename))  
   
  //写文件  
  li_FileNum   =   FileOpen(ls_downfile,StreamMode!,   Write!,   Shared!,   Append!)  
  ll_bytes_read=FileWrite(li_FileNum,emp_id_pic)  
     
  for   li_counter=2   to   li_loops  
        ll_new_pos=ll_bytes_read*(li_counter   -   1)   +   1  
  ll_new_pos=ll_bytes_read*li_counter  
   
  data_ls   =   BlobMid(emp_id_pic,ll_bytes_read*(li_counter   -   1)   +   1,ll_bytes_read*li_counter)  
        ll_new_pos=FileWrite(li_FileNum,data_ls)  
   
  next  
  fileclose(li_filenum)  
   
  //最后  
  dw_1.object.p_1.Filename='d:/ls/temp.bmp'   
  字段值应为全路径名:如:c:/mydocu~1/mypict~1/1.bmp  
  图片格式:仅能用BMP  
  路径名:DOS   8。3格式
任意控件,在general页选取display   as   picture 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值