我有一事苦恼 ! 请教  我在编报名信息库时 ,用Access将个人报名的照片存入一个字段 ,在好中用ADO 控件可显示出来。现由于要求 ,需将写入的Access中的图片 ,写成图片格式的文件(*.jpg)。方便调用印证。请教各位大师!!! 急盼[email protected]

解决方案 »

  1.   

    不知如何用 VB 编写代码,保存用PictureBox显示出的图片.   写成一个文件。
      

  2.   

    给一个vb的例子给你
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim stm As ADODB.StreamPrivate Sub SavePictureToDB(cn As ADODB.Connection)
    '将BMP图片存入数据库
    On Error GoTo EH
        Set stm = New ADODB.Stream
        rs.Open "select ImagePath,ImageValue from tbl_Image", cn, adOpenKeyset, adLockOptimistic
        CommonDialog1.ShowOpen
        Text1.Text = CommonDialog1.FileName
        
        With stm
             .Type = adTypeBinary
             .Open
             .LoadFromFile CommonDialog1.FileName
        End With
        With rs
             .AddNew
             .Fields("ImagePath") = Text1.Text
             .Fields("ImageValue") = stm.Read
             .Update
        End With
        rs.Close
        Set rs = Nothing
    Exit Sub
    EH: MsgBox Err.Description, vbInformation, "Error"
    End Sub
    Private Sub LoadPictureFromDB(cn As ADODB.Connection)
    '载数据库中读出BMP图片
    On Error GoTo EH
        Dim strTemp As String
        Set stm = New ADODB.Stream
        strTemp = "c:\temp.tmp" '临时文件,用来保存读出的图片
        rs.Open "select ImagePath,ImageValue  from tbl_image", cn, , , adCmdText
        With stm
            .Type = adTypeBinary
            .Open
            .Write rs("ImageValue")
            .SaveToFile strTemp, adSaveCreateOverWrite
            .Close
        End With
        Image1.Picture = LoadPicture(strTemp)
        Set stm = Nothing
        rs.Close
        Set rs = Nothing
    Exit Sub
    EH: MsgBox Err.Description, vbInformation, "Error"
    End Sub
      

  3.   

    再来一个
    用picture显示
    '以下两个函数是从数据库中读出图片的核心程序Public Function GetImage(Optional Filename As String) As Variant
    On Error GoTo ProcErr  Dim objRS As adodb.Recordset
      Dim strSQL As String
      Dim Chunk() As Byte
     
      Set objRS = New adodb.Recordset
      
      'strSQL = "select thumb from tblpictures where idpict='" & tblID(ThumbIndex) & "'"
      strSQL = "select thumb from tblpictures where idpict= " & thumb
      'strSQL = "select thumb from tblpictures where idpict='387'"
      'db.Execute strSQL
      objRS.Open strSQL, db, adOpenForwardOnly, adLockReadOnly
      
      If objRS.BOF And objRS.EOF Then
        GetImage = 0
        GoTo ProcExit
      ElseIf IsNull(objRS.Fields(0)) Then
        'ErrNumber = 1001
        'ErrDesc = "字段为空"
        GoTo ProcExit
      End If
      
      Chunk() = objRS.Fields(0).GetChunk(objRS.Fields(0).ActualSize)
      Set GetImage = Chunk2Image(Chunk(), Filename)ProcExit:
      On Error Resume Next
      'objRS.Close
       ' Chunk() = objRS.Fields(0).GetChunk(0)
        Set GetImage = Chunk2Image(Chunk(), Filename)
     ' Set objRS = Nothing  Exit FunctionProcErr:
      GetImage = 0
      Resume ProcExit
    End Function
    Private Function Chunk2Image(Chunk() As Byte, Optional Filename As String) As Variant
    On Error GoTo ProcErr
    Dim KeepFile As Boolean
    Dim Datafile As Integer    KeepFile = True
        If Trim(Filename) = "" Then
          Filename = "c:\tmpxxdb.fil"
          KeepFile = False
        End If    Datafile = FreeFile
        Open Filename For Binary Access Write As Datafile
          Put Datafile, , Chunk()
        Close DatafileProcExit:
      Set Chunk2Image = LoadPicture(Filename)
      On Error Resume Next
    '  If Not KeepFile Then Kill filename
      Exit FunctionProcErr:
      On Error Resume Next
      Kill Filename
      Chunk2Image = 0
    End Function
      

  4.   

    没有直接写成JPG的函数,可以直接写成BMP。
    不过,我想你应该进一步考虑自己的需求,如果仅仅是显示出来的话,根本就不必要写成JPG。直接用楼上提供的办法读出来,在app.path下写成一个temp.bmp,然后loadpicture到图片框中显示即可。
    试试看!
      

  5.   

    用ADO.Stream对象,以VB程序为例子
    '*************************************************************************
    '**
    '** 使用 ADODB.Stream 保存/读取文件到数据库
    '** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    '**
    '** ----- 数据库连接字符串模板 ---------------------------------------
    '** ACCESS数据库
    '** iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
    '**     ";Data Source=数据库名"
    '**
    '** SQL数据库
    '** iConcStr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
    '**     "User ID=用户名;Password=密码;Initial Catalog=数据库名;Data Source=SQL服务器名"
    '**
    '*************************************************************************
    '
    '保存文件到数据库中
    Sub s_SaveFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConcStr As String
        
        '数据库连接字符串
        iConcStr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=F:\My Documents\客户资料1.mdb"
        
        '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary    '二进制模式
            .Open
            .LoadFromFile "c:\test.doc"
        End With
        
        '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "表", iConc, adOpenKeyset, adLockOptimistic
            .AddNew         '新增一条记录
            .Fields("保存文件内容的字段") = iStm.Read
            .Update
        End With
        
        '完成后关闭对象
        iRe.Close
        iStm.Close
    End Sub'从数据库中读取数据,保存成文件
    Sub s_ReadFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConc As String
        
        '数据库连接字符串
        iConc = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=\\xz\c$\Inetpub\zj\zj\zj.mdb"
        
        '打开表
        Set iRe = New ADODB.Recordset
        iRe.Open "tb_img", iConc, adOpenKeyset, adLockReadOnly
        iRe.Filter = "id=64"
        
        '保存到文件
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write iRe("img")
            .SaveToFile "c:\test.doc"
        End With
        
        '关闭对象
        iRe.Close
        iStm.Close
    End Sub
      

  6.   

    参考我的贴子:数据库中存取文件
    http://expert.csdn.net/Expert/topic/2403/2403509.xml?temp=7.796878E-02