不用这么复杂,字段 <--> ADODB。Stream对象 <--> 二进制文件 ,就可以了

解决方案 »

  1.   

    我写的一个过程,用来从表中的img字段读出图片,然后按照PictureBox的大小进行等比例缩放,过程的两个参数分别传递一个打开的记录集和表中的图片字段名称。引用ADO2.5以上。Private Sub ReadPic(ByVal rs As ADODB.Recordset, ByVal rsFld As String)
        Dim pp As IPictureDisp
        Dim stm As New ADODB.Stream
        Const FileName As String = "temp.tmp"
        
        If Dir(App.Path & "\" & FileName) <> "" Then Kill (App.Path & "\" & FileName)
        
        stm.Type = adTypeBinary
        stm.Open
        stm.Write rs.Fields(rsFld).GetChunk(rs.Fields(rsFld).ActualSize)
        stm.SaveToFile App.Path & "\" & FileName, adSaveCreateNotExist
        
        Set pp = LoadPicture(App.Path & "\" & FileName)
        
        Picture1.Cls
        
        If pp.Width <= pp.Height Then
            Picture1.PaintPicture pp, (Picture1.ScaleWidth - pp.Width * Picture1.ScaleHeight / pp.Height) / 2, 0, pp.Width * Picture1.ScaleHeight / pp.Height, Picture1.ScaleHeight
        ElseIf pp.Width > pp.Height Then
            Picture1.PaintPicture pp, 0, (Picture1.ScaleHeight - pp.Height * Picture1.ScaleWidth / pp.Width) / 2, Picture1.ScaleWidth, pp.Height * Picture1.ScaleWidth / pp.Width
        End If
        Set pp = Nothing
        
        Kill (App.Path & "\" & FileName)
    End Sub