想在ACCESS数据库中的一个字段放置职员相片并使用DATE控件或DAO在窗体上浏览,请问字段设置成什么类型,VB相关代码如何编写?

解决方案 »

  1.   

    字段:OLE用ADO语句连接:
    '将图片写数据库
    Public Sub SubPicToDb(strDB As String, strField As String, sqlCon As String, strFileName As String)
    Dim adoStream As New ADODB.Stream
    Dim strCon As String
    On Error GoTo ErrToDB
    Set pRst = New ADODB.Recordset
    strCon = "select " & strField & " from " & strDB & " where " & sqlCon
    pRst.Open strCon, pConn, adOpenKeyset, adLockOptimisticadoStream.Type = adTypeBinary
    adoStream.Open
    adoStream.LoadFromFile strFileName
    pRst(strField).AppendChunk adoStream.Read
    pRst.UpdatepRst.Close
    adoStream.Close
    Set adoStream = Nothing
    Set pRst = Nothing
    Exit Sub
    ErrToDB:
    MsgBox Err.Description, vbOKOnly + vbExclamation, "提示"
    End Sub'从数据库中提取二进制数据
    Public Sub SubDbToPic(strDB As String, strField As String, sqlCon As String, objPic As Object)
    Dim adoStream As New ADODB.StreamDim strCon As String
    Dim strFileName As String
    Dim TempFileName As String
    On Error GoTo ErrPic
    Set pRst = New ADODB.Recordset
    TempFileName = App.Path & "\TempFile.tmp"
    strCon = "select " & strField & " from " & strDB & " where " & sqlCon
    adoStream.Type = adTypeBinary
    adoStream.Open
    pRst.Open strCon, pConn, adOpenDynamic, adLockPessimistic
    'If pRst.RecordCount > 0 Then
    adoStream.Write pRst(strField).GetChunk(pRst(strField).ActualSize)
    adoStream.SaveToFile TempFileName, IIf(Len(Trim(Dir(TempFileName, vbNormal + vbHidden))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
    objPic.Picture = LoadPicture(TempFileName)
    Kill TempFileName
    'End If
    pRst.Close
    adoStream.Close
    Set adoStream = Nothing
    Set pRst = Nothing
    Exit Sub
    ErrPic:
         If pRst.State = adStateOpen Then pRst.Close
         If adoStream.State = adStateOpen Then adoStream.Close
         Set pRst = Nothing
         Set adoStream = Nothing
    End Sub