可以这样,当你选择一个图片的时候,先把他放到一个ole对象里面,然后再调用,例如:
但是必须有一个image字段,并且允许为空,如:string  ls_path , ls_filename , ls_title
blob lb_object
GetFileOpenName("选择文件打开", + ls_path,ls_filename, "bmp",  + "bmp Files (*.bmp),*.bmp,"  )
If ls_filename ="" Then return
//MessageBox("ss",string(dw_1.getrow()))
ls_title = dw_1.object.data[ dw_1.getrow() , 1 ]If ole_1.insertfile(ls_path) <> 0 then 
         messagebox(" " , " 打开文件失败!")
         close(w_zjphoto)
return
End If
lb_object = ole_1.objectdata//提交OLE控制内的数据到数据库表中
sqlca.autocommit = TRUE
csql="update jgzjk set fzrzp=0x00" //必须赋值,否则updateblob不能执行
execute immediate csql;
updateblob jgzjk  set fzrzp = :lb_object;
if SQLCA.SQLCode = -1 then
rollback;
return
end if
commit;
sqlca.autocommit = FALSE

解决方案 »

  1.   

    xtjack,这种方法是用于bmp文件的,对jpg文件它只存进去一个文件名,没有内容,在Datawindow中双击才出来实际内容,另外用bmp也会出现带文件名情况.
    希望多多交流。
      

  2.   

    xtjack的方法似乎太复杂了,可以采用文件流的方式。img存入时用fileread打开源文件,然后用updateblob更新表记录;取出时先用filewrite写到本地,再赋给相应的img控件。
      

  3.   

    我认为这是个关于ole的问题,请问有没有更深的理解呢。
      

  4.   

    用文件打开只是存储的问题,但是sqls server好像是不能向一个null的image字段updatblob,不知道是不是!!反正我是遇到这个问题的1!!!
      

  5.   

    试试先Binary方式打开文件,将其写入一个字节型数组中,然后Fields.Value=此数组。显示时方法反过来。我在VB中一直这样用。
      

  6.   

    http://lookfar.longcity.net上的翻译文章有更新