Image1.Picture = LoadPicture(rs.Fields(0))
这条语句错了。我该如何写这条语句,谢谢。

解决方案 »

  1.   

    是把这个图片的地址作为FIELD(0)
      

  2.   

    用二进制来做(sql server似乎是image类型)
    这样得到的数据流就是图象的数据流,至于如何才能转化成bmp....vb.net有办法直接new bitmap from stream就ok了,但是vb6似乎就困难了,需要额外的sdk,比如intel的jpeg压缩.或者你写临时文件,然后再用picturebox加载(不是好办法的办法)
      

  3.   

    数据类型问题,用超链接类型不行,用字符串!
    LoadPicture(rs.Fields(0))读出来的是路径!不是以二进制的方式!
      

  4.   

    使用流对象保存和显示图片 
    打开vb6,新建工程。添加两个按钮,一个image控件
    注意:Access中的photo字段类型为OLE对象.
    SqlServer中的photo字段类型为Image'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
    ‘2.5版本以下不支持Stream对象
    Dim iConcstr As String
    Dim iConc As ADODB.Connection
     '保存文件到数据库中
    Sub s_SaveFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        Dim iConcstr As String    '读取文件到内容
        Set iStm = New ADODB.Stream
        With iStm
            .Type = adTypeBinary   '二进制模式
            .Open
            .LoadFromFile App.Path + "\test.jpg"
        End With
           '打开保存文件的表
        Set iRe = New ADODB.Recordset
        With iRe
            .Open "select * from img", iConc, 1, 3
            .AddNew         '新增一条记录
            .Fields("photo") = iStm.Read
            .Update
        End With
          '完成后关闭对象
        iRe.Close
        iStm.Close
    End Sub
    Sub s_ReadFile()
        Dim iStm As ADODB.Stream
        Dim iRe As ADODB.Recordset
        '打开表
    Set iRe = New ADODB.Recordset
    ‘得到最新添加的纪录
        iRe.Open "select top 1 * from img order by id desc", iConc, adOpenKeyset, adLockReadOnly
        '保存到文件
        Set iStm = New ADODB.Stream
        With iStm
            .Mode = adModeReadWrite
            .Type = adTypeBinary
            .Open
            .Write iRe("photo")
    ‘这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误.
            .SaveToFile App.Path & "\test1.jpg"
        End With
           Image1.Picture = LoadPicture(App.Path & "\test1.jpg")
       '关闭对象
        iRe.Close
        iStm.Close
    End Sub
     Private Sub Command1_Click()
    Call s_ReadFile
    End Sub
    Private Sub Command2_Click()
    Call s_SaveFile
    End Sub
    Private Sub Form_Load()
        '数据库连接字符串
        iConcstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
            ";Data Source=F:\csdn_vb\database\保存图片\access图片\img.mdb"‘下面的语句是连接sqlserver数据库的.
        ‘iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
    ‘ "User ID=sa;Password=;Initial Catalog=test;Data Source=yang"
        Set iConc = New ADODB.Connection
       iConc.Open iConcstr
    End Sub
     Private Sub Form_Unload(Cancel As Integer)
    iConc.Close
    Set iConc = Nothing
    End Sub
      

  5.   

    直接把图片的内容放入数据库,然后用二进制数据读入保存到文件中再显示即可。
    Private Sub ReadFromDB()
    Dim MediaTemp As String
    Dim lngOffset As Long
    Dim lngTotalSize As Long
    Dim strChunk As String
    Dim Title As String
    On Error Resume NextIf Fa.MouseRow = 0 Then Exit Sub    'only use good rows
    Title = Fa.TextMatrix(Fa.MouseRow, 1)
    Set rs = db.OpenRecordset("SELECT tblMedia.Picture FROM tblMedia WHERE tblMedia.Title = '" & Title & "'", dbOpenSnapshot)
    If rs.RecordCount = 0 Then
       MsgBox "error retrieving object"
       rs.Close
       Set rs = Nothing
       Exit Sub
    End If
    MediaTemp = App.Path & "\mdiatemp.tmp"DataFile = 1
    Open MediaTemp For Binary Access Write As DataFileIf Err.Number = 70 Then
        MsgBox Err.Number & Err.Description
        Err.Clear
        rs.Close
        Set rs = Nothing
        Exit Sub
    End IflngTotalSize = rs!Picture.FieldSize
    Chunks = lngTotalSize \ ChunkSize
    Fragment = lngTotalSize Mod ChunkSize
    'ReDim Chunk(Fragment)
    ReDim Chunk(ChunkSize)
    Chunk() = rs!Picture.GetChunk(lngOffset, ChunkSize)
    Put DataFile, , Chunk()
    lngOffset = lngOffset + ChunkSize
    Do While lngOffset < lngTotalSize
       Chunk() = rs!Picture.GetChunk(lngOffset, ChunkSize)
       Put DataFile, , Chunk()
       lngOffset = lngOffset + ChunkSize
    Loop
    Close DataFileFileName = MediaTempEnd Sub
    Private Sub FileName_Change()
        SaveToDB.Enabled = FileName <> ""
        If FileName = "" Then Exit Sub    Image1.Picture = LoadPicture(FileName)
        Image1.Visible = True
        
    End Sub
      

  6.   

    就放相对路径进去就可以了~~~~ Image1.Picture = LoadPicture(FileName)