热情软件屋

 

ADO绑定Image控件内的图片未更新


编号:QA001794
建立日期: 1999年10月1日 最后修改日期:1999年10月1日
所属类别:

chenjian:
    操作系统:win98,nt4.0
    工具:vb6.0
    问题:在自编一程序的数据库操作中,用ADO绑定Image控件内的图片在 image1.Picture = LoadPicture("C:\Win95\Setup.bmp") 后窗体上更新了,但ACCESS中却仍未更新,而文本等其他控件在修改后updata能更新。(在DATA控件绑定中则能更新)有何办法解决?请多指教!非常感谢!

回答:

    具体的原因我也不太清楚,不过有一个办法可以解决这个问题,就是将图片文件按二进制方式打开后原封不动地写进数据库(使用SetChunk方法,请注意,建议使用动态Byte数组,不要使用字符串或变体,可能的话,一次性读文件到一个数组,在64M机器上打开4M以下的图片文件没有问题),同时存储该图片文件的扩展名和文件大小,要查看图片时,再使用GetChunk方法读出原先记下的文件长度到一二进制数组,找到Windows Temp目录后存为一个文件再打开。附简单程序如下(程序中如有错误,请自行调试):
    数据库表为
    0 编号(字符型)
    1 图片(ole类型)
    2 图片文件扩展名(字符型)
    3 图片文件长度(长整型)
    
    Function SavePicture(rstMain as adodb.recordset,strFileName as string)
    dim FileHandle as string
    dim lngLogoSize as long
    dim varLogo() as byte
     rstMain.Addnew
     rstMain(0).value = txtBH.Text
     FileHandle = FreeFile
     Open strFileName For Binary As #FileHandle
     lngLogoSize = FileLen(strFileName)
     ReDim varLogo(lngLogoSize - 1)
     Get #FileHandle, , varLogo() '数组名加()可以代表数组
     rstMain(1).AppendChunk varLogo()
     Close #FileHandle
    
     rstMain(2) = Right(strFileName, 4)
     rstMain(3) = lngLogoSize
     rstMain.Update
    end Function
    
    function ShowPicture(rstMain as adodb.recordset,gTempPath as string)
    '显示图片
     Dim lngLogoSize As Long
     Dim varLogo() As Byte
     Dim strTempPath As String
     Dim lResult As Long
     Dim FileHandle As Long
    
     strTempPath = gTempPath '请自行得到Temp路径
     strTempFileName = strTempPath & "PctTemp" & rstMain(2) '存为一临时文件
     FileHandle = FreeFile
     Open strTempFileName For Output As #FileHandle
     Close #FileHandle
     Open strTempFileName For Binary As #FileHandle
     lngLogoSize = rstMain(3)
    
     ReDim varLogo(lngLogoSize - 1)
     varLogo() = rstMain(1).GetChunk(lngLogoSize)
     Put #1, , varLogo
     Close #1
     Set imgPreview.Picture = LoadPicture(strTempFileName)
    end function

此问题由xieluo回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio