菜鸟问题啊!
access数据库中能存贮图片吗?如果能的话在VB中用什么控件查看图片呢?

解决方案 »

  1.   

    是可以的,vb里可以用picture或者image,具体的办法去看以前的帖子吧,这个方面的太多了~
      

  2.   

    Access数据库可以用“OLE对象”字段来保存图片,VB中用image设定好数据源就可以查看图片
      

  3.   

    同意hthunter(核桃-我的心在下雨,雨中我和她携手漫步) 的方法
      

  4.   

    '在数据库中存取图像的示例程序。'创建一个Access数据库:1个表:TableName: picture_info
                  '表中有2个字段:1.ID    Type:自动编号
    '                             2.Picture Type:OLE对象'运行VB,选择“工程\引用”命令,
                  '引用“Microsoft AetiveX Date 2.x Library”
                  
    '在窗体(Form)中加入如下控件:
    '1个PictureBox控件   用来显示图像             Name:Picture1
    '1个CommonDialog控件  用来选择要保存的图像     Name:CommonDialog1
    '1个Label控件     用来显示数据库中图片的相关信息
    '6个CommandButton控件:1.Name:cmdSelect Caption:Select 选择图片
    '                      2.Name:cmdSave   Caption:Save 保存图片
    '                      3.Name:cmdDel    Caption:Del   删除图片
    '                      4.Name:cmdShow      Caption:Show  顺序显示图片
    '                      5.Name:cmdClose     Caption:Close 清除图像的图片
    '                      6.Name:cmdEnd       Caption:End   结束程序
    '示例代码如下:Option Explicit
        Dim Conn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim StmPic As ADODB.Stream
        Dim StrPicTemp As String
        Dim BolPic As Boolean
        Dim i As Long'图片显示过程
    Sub ShowPicture()
        If Not IsNull(rs.Fields(1)) Then
            Set StmPic = New ADODB.Stream
            StrPicTemp = "c:\temp.tmp"  '临时文件,用来保存读出的图片
            With StmPic
                .Type = adTypeBinary
                .Open                 '打开
                .Write rs.Fields(1)  '写入数据库中的二进制文件
                .SaveToFile StrPicTemp, adSaveCreateOverWrite
                .Close
            End With
            Picture1.Picture = LoadPicture(StrPicTemp) '载入临时文件中的图像
        Else
            Picture1.Picture = LoadPicture()
        End If
    End Sub'窗体载入时连接数据库,打开数据集,初始化窗体
    Private Sub Form_Load()
        Set Conn = New ADODB.Connection
        Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & App.Path & "\db1.mdb;" & _
            "Persist Security Info=False"
        Set rs = New ADODB.Recordset
        rs.Open "select * from picture_info", Conn, _
            adOpenKeyset, adLockOptimistic
        If rs.RecordCount > 0 Then
            rs.MoveLast  '移到最后一张图像,保证按下浏览按钮时,从第一张图像开始显示
            i = rs.RecordCount
            Label1.Caption = "共 " & rs.RecordCount & " 张图片"
        Else
            Label1.Caption = "数据库中没有图片"
        End If
        BolPic = False
    End Sub'选择图像
    Private Sub cmdSelect_Click()
        Dim FileName As String
        BolPic = False
        Label1.Caption = "共 " & rs.RecordCount & _
            " 张图片,你想添加的是第 " & _
            rs.RecordCount + 1 & " 张"
        Picture1.Picture = LoadPicture()
        CommonDialog1.Filter = "图像文件(*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif" '筛选图像文件
        CommonDialog1.FilterIndex = 2
        CommonDialog1.ShowOpen
        If CommonDialog1.FileName = "" Then  '按下取消按钮恢复原来显示状态
            If StrPicTemp <> "" Then
                Picture1.Picture = LoadPicture(StrPicTemp)
                Label1.Caption = "共 " & rs.RecordCount & " 张图片,这是第 " & i & " 张"
                Exit Sub
            Else
                Label1.Caption = "共 " & rs.RecordCount & " 张图片"
                Exit Sub
            End If
        End If
        FileName = CommonDialog1.FileName
        Picture1.Picture = LoadPicture(FileName) '预览图片
    End Sub'保存所选择的图像
    Private Sub cmdSave_Click()
        BolPic = False
        If CommonDialog1.FileName = "" Then
            MsgBox "你没选择图片,保存什么?没图像的话,快去照相,保存自己吧!", _
                vbOKOnly + vbExclamation, "自娱咋乐?"
            Exit Sub
        End If
        If CommonDialog1.FileName <> "" Then
            Set StmPic = New ADODB.Stream
            StmPic.Type = adTypeBinary
            StmPic.Open
            StmPic.LoadFromFile (CommonDialog1.FileName)
            rs.AddNew
            rs.Fields(1).Value = StmPic.Read
            rs.Update
            StmPic.Close
            Call ShowPicture
            CommonDialog1.FileName = "" '清空是防止重复按Save鍵,造成重复保存图像
            i = rs.RecordCount
            Label1.Caption = "共 " & rs.RecordCount & " 张图片,这是第 " & i & " 张"
        End If
    End Sub'删除当前显示的图像
    Private Sub cmdDel_Click()
        Dim X As String
        BolPic = False
        If rs.RecordCount = 0 Then
            MsgBox "数据库中没有图片,你想删除什么?笑话!", _
                vbOKOnly + vbExclamation, "你真搞笑"
            Exit Sub
        End If
        If StrPicTemp = "" Then
            MsgBox "你没选择图片,你想删除什么啊?", _
                vbOKOnly + vbExclamation, "你真搞笑"
            Exit Sub
        End If
        Picture1.Picture = LoadPicture(StrPicTemp)
        X = MsgBox("  图片删除后不能恢复! 确认删除第 " & _
            i & " 张图片吗? ", vbOKCancel + vbExclamation, "警告")
        If X = vbCancel Then
            Exit Sub
        End If
        rs.Delete adAffectCurrent
        rs.Update
        StrPicTemp = ""      '清空该图像的临时文件
        CommonDialog1.FileName = ""
        Picture1.Picture = LoadPicture()  '清空图片框中的图片
        If rs.RecordCount > 0 Then
            If Not rs.EOF Then
                rs.MoveNext
            End If
            If rs.EOF Then
                rs.MoveFirst
                i = 1
            End If
            Label1.Caption = "共 " & rs.RecordCount & " 张图片,这是第 " & i & " 张"
            Call ShowPicture
        Else
            Label1.Caption = "数据库中没有图片"
        End If
    End Sub'顺序读取显示数据库中的图像
    Private Sub cmdShow_Click()
        If rs.RecordCount = 0 Then
            MsgBox "数据库中没有图片,看什么啊?发呆啊?", _
                vbOKOnly + vbExclamation, "快快添加"
            Exit Sub
        End If
        If rs.RecordCount > 0 Then
            If BolPic = False Then
                If Not rs.EOF Then
                    rs.MoveNext
                    i = i + 1
                End If
                If rs.EOF Then
                    rs.MoveFirst
                    i = 1
                End If
            ElseIf BolPic = True Then
                BolPic = False
            End If
            Label1.Caption = "共 " & rs.RecordCount & " 张图片,这是第 " & i & " 张"
            CommonDialog1.FileName = ""
            Call ShowPicture
        End If
    End Sub'清除当前显示的图像
    Private Sub cmdClose_Click()
        CommonDialog1.FileName = ""
        If StrPicTemp <> "" And BolPic = False Then
            Picture1.Picture = LoadPicture()  '清空图片框中的图片
            BolPic = True
            Exit Sub
        End If
        If StrPicTemp <> "" And BolPic = True Then
            MsgBox "第 " & i & " 张图像已被你清除了呀!,还清除啥呀?!!真笨!!!", _
                vbOKOnly + vbExclamation, "来来去去一场空"
            BolPic = True
        End If
        If StrPicTemp = "" Then
            MsgBox "原本没有显示图像,清除啥呀?好笨!", vbOKOnly + vbExclamation, _
                "来来去去一场空"
            BolPic = False
            Exit Sub
        End If
    End Sub'退出程序
    Private Sub cmdEnd_Click()
        Unload Me
    End Sub'卸载窗体关闭连接和数据集、清空临时文件、清空图片控件中的图片
    Private Sub Form_Unload(Cancel As Integer)
        Picture1.Picture = LoadPicture()
        CommonDialog1.FileName = ""
        StrPicTemp = ""
        rs.Close
        Conn.Close
    End Sub
      

  5.   

    一个实例
    http://office.9zp.com/dispbbs.asp?boardID=7&ID=2078