Function PutPic1(ByVal FPicTable As String, ByVal DPicField As String, ByVal DPicId As String, ByVal PicId As String, ByVal TempId As String) As Integer
'将数据库内的二进制文件转化成临时图片
'FPicTable      图片的数据表
'DPicField      图片的数据字段
'DPicId         图片的数据编号
'PicId          图片的数据编号数据
On Error GoTo PutPicErrorDim B As String
Dim BytFile() As Byte           '二进制数组
Dim TmpRs As New Recordset
Dim TmpBoolean As String
Dim GetPutPicPath As String
GetPutPicPath = App.Path & "\temp.bmp"    TmpRs.Open "select * from " & Trim(FPicTable) & " where " & Trim(DPicId) & "='" & Trim(PicId) & "'", CnnSql, adOpenKeyset, adLockOptimistic
    If Not TmpRs.EOF Then
        B = TmpRs(DPicField).ActualSize
        If B <> 0 Then
            BytFile = TmpRs(DPicField).GetChunk(B)
            Open GetPutPicPath For Binary As #2
            Put 2, , BytFile
            Close #2
            TmpRs.Close
            PutPic = 1
        Else
            PutPic = 0
        End If
    Else
        PutPic = 0
    End If
    Exit Function
PutPicError:
    PutPic = 0
End FunctionFunction GetPic1(ByVal FPicTable As String, ByVal DPicField As String, ByVal DPicId As String, ByVal PicId As String, ByVal TempId As String) As Integer
'将临时图片转化成二进制文件存放在数据库内
'FPicTable      图片的数据表
'DPicField      图片的数据字段
'DPicId         图片的数据编号
'PicId          图片的数据编号数据
On Error GoTo GetPicErrorDim B As String
Dim BytFile() As Byte           '二进制数组
Dim TmpRs As New Recordset
Dim TmpBoolean As String
Dim GetPutPicPath As String
GetPutPicPath = App.Path & "\temp.bmp"
    
    Open GetPutPicPath For Binary As #1
    B = LOF(1)
    ReDim BytFile(B)
    Get 1, , BytFile
        TmpRs.Open "select * from " & Trim(FPicTable) & " where " & Trim(DPicId) & "='" & Trim(PicId) & "'", CnnSql, adOpenKeyset, adLockOptimistic
    If Not TmpRs.EOF Then
        TmpRs.Fields(Trim(DPicField)).AppendChunk (BytFile)
        TmpRs.Update
    End If
    Close #1
    Exit Function
GetPicError:
    GetPic = 0
End Function
看看这

解决方案 »

  1.   

    Sub save_picture(ByVal Mypicture As String)  'Picture的路径
    Dim cnn As New ADODB.Connection
    Dim rst1 As Recordset
      Dim bit() As Byte   Set rst1 = adoconnect3("db2.mdb", "表1", "*", "")
        
        'If Not (rst1.EOF And rst1.BOF) Then
           If Mypicture = "" Then
            '    然后将字节数组的内容写入数据库即可
                rst1.Fields("Picture") = ""
                rst1.UpdateBatch
           Else
                Open Mypicture For Binary As #1
                ReDim bit(LOF(1)) As Byte
                Get 1, 1, bit
                Close 1
             '    然后将字节数组的内容写入数据库即可
             rst1.AddNew
             rst1.Fields("Picture").AppendChunk bit
             rst1.Fields("Name") = "姓名"
             rst1.UpdateBatch
           End If
        'End If
    End Sub
      

  2.   

    楼上兄弟说得很详细!但是,我认为并不需要先保存进文件,只需一次性把文字和图形的二进制流送入字段即可。代码主要是用楼上兄弟的这几句:'先获得二进制流 BytFile,然后
    TmpRs.Open "select * from " & Trim(FPicTable) & " where " & Trim(DPicId) & "='" & Trim(PicId) & "'", CnnSql, adOpenKeyset, adLockOptimistic
    If Not TmpRs.EOF Then
        TmpRs.Fields(Trim(DPicField)).AppendChunk (BytFile)
        TmpRs.Update
    End If以上如果对你有帮助的话可记得要多送分哟!哈哈--小马哥和大家问好了!
      

  3.   

    楼上的,
    我已经结分了,怎么没显示出来?
    还有我问你,你不存入文件,又怎样获得ByFile呢?
      

  4.   

    楼上的,
    我已经结分了,怎么没显示出来?
    还有我问你,你不存入文件,又怎样获得ByFile呢?