要把图片的数据读出来生成临时文件,然后再用picturebox显示该临时文件
=================
共同学习,共同进步

解决方案 »

  1.   

    这是可用的方法,但。。那么picturebox的属性datasource、datafield是有什么用?
      

  2.   

    你完全可以把OLE字段绑定到POCTUREBOX中
    只是你在把图片保存到OLE字段中处理一下,把他转成二进制后在放到OLE字段中,代码如下:
     Dim sFile As String
       '''''''先选择图片
          With CommonDialog1
            .DialogTitle = "打开"
            .CancelError = False
            'ToDo: 设置 common dialog 控件的标志和属性
            .Filter = "图形文件 *.BMP;*.JPG;*.GIF;*.PIC;*.TIF|*.BMP;*.JPG;*.GIF;*.PIC;*.TIF|"
            .ShowOpen
            If Len(.FileName) = 0 Then
                Exit Sub
            End If
            sFile = .FileName
          End With   
          Dim LNGLOGOSIZE As Long  '图形文件长度
       
         
          LNGLOGOSIZE = FileLen(sFile)
          If LNGLOGOSIZE > 999999 Then
             MsgBox "图形文件太大,请将图形文件压缩或缩小到1M以内", vbInformation, Msg_Title4
             Exit Sub
          End If
          
         LNGLOGOSIZE = FileLen(sFile)
         Dim TEMPBUF() As Byte
         ReDim TEMPBUF(LNGLOGOSIZE) '100)
         Open sFile For Binary As #1
         Get #1, , TEMPBUF
         Rs1!GOOD_IMAGE.AppendChunk (TEMPBUF) ''''把图片放到字段中
         Close #1
         Image1.Picture = LoadPicture(sFile)
          Rs1.UpdateBatch
          Rs1.MovePrevious
          Rs1.MoveNext
      

  3.   

    gebobo(波波):
       首先感谢你提供的代码,但“Image1.Picture = LoadPicture(sFile)”这不算“绑定”吧
      

  4.   

    Sub show_picture()
    Dim rst As Recordset
    Dim sSql As String
    Dim I As Integer
    Dim bit1() As Byte
    Dim sa As String
      Set rst = adoconnect3("db2.mdb", "表1", "*", "")
         If rst.EOF Or rst.BOF Then
            Exit Sub
         Else
                Picture1.Picture = Nothing
                If rst("Picture").ActualSize > 0 Then
                    bit1 = rst.Fields("Picture").GetChunk(rst("Picture").ActualSize)
                    '然后将字节数组的内容拼装成文件即可
                    Open "c:\1.bmp" For Binary As #1
                  
                    Put 1, 1, bit1
                    Close 1
                    Picture1.Picture = LoadPicture("c:\1.bmp")
                    Kill ("c:\1.bmp")            End If
         End If
        rst.Close
        Set rst = Nothing
    Exit Sub
    Err:
       MsgBox "读取Picture出错!", OKOnly, "系统提示"
    End Sub
      

  5.   

    是的
    我以前用的是ADO绑定,就是在POCTUREBOX的datasource用ADODC
    datafield就是你的OLE对象,
    你可以试试,你用查询,POCTUREBOX就可以显示图片了
      

  6.   

    gebobo(波波):
      我是试过把POCTUREBOX的datasource用ADODC,datafield设对应的字段,但不能显示,希望你可再试一试可否行。footballboy(郑创斌):
      可以详细说明做法吗?或者有什么要注意的地方希望各位支持,问题解开立即送上分
      

  7.   

    Data1控件绑定OLE对象类型的字段与其他类型字段的方法是一样的
    添加Data控件,设定Connect、DatabaseName、Recordsource、设定PictureBox控件的Datasource为Data1,DataField属性为OLE对象类型的字段名