利用Vb保存一幅圖到Access數(shù)據(jù)庫(kù)

字號(hào):

考試大編輯整理:在我們做的許多管理系統(tǒng)中,除了保存大量的文字信息以外,有時(shí)候也需要保存一定數(shù)量的圖片。例如:一個(gè)人事管理系統(tǒng),就需要對(duì)每個(gè)人的照片進(jìn)行保存,以便可以方便的對(duì)每個(gè)人的信息進(jìn)行處理。
    Office中的Access數(shù)據(jù)庫(kù)除了保存文本,還可以保存圖片,保存圖片的數(shù)據(jù)類型就是"OLE對(duì)象":它用來(lái)保存 Excel 電子表格、 Word 文檔、圖形、聲音或其他二進(jìn)制數(shù)據(jù)。
    我現(xiàn)在用一個(gè)例子介紹利用VB保存圖片的方法,首先我們要介紹vb中處理二進(jìn)制數(shù)據(jù)的語(yǔ)句:Put、Get。
    Put、Get語(yǔ)句語(yǔ)法如下:
    Put [#] filenumber,[recnumber],varname
    Get [#] filenumber,[recnumber],varname
    Filenumber :必需的。任何有效的文件號(hào)
    Recnumber :可選的。Variant(Long)。記錄號(hào)(Random方式的文件)或字節(jié)數(shù)(Binary方式的文件),指明在此處開(kāi)始寫入
    Varname :必需的。包含要寫入磁盤的數(shù)據(jù)的變量名
    說(shuō)明:文件中的第一個(gè)記錄或字節(jié)位于位置1,第二個(gè)記錄或字節(jié)位于位置2,依次類推。若省略recnumber,則將上一個(gè)Get或Put語(yǔ)句之后的下一個(gè)記錄或字節(jié)寫入。所有用于分界的逗號(hào)都必須羅列出來(lái)。
    現(xiàn)在我們來(lái)開(kāi)始建一個(gè)工程,功能是保存一個(gè)文檔,同時(shí)可以保存一幅圖片。
    首先我們建一個(gè)表(表名為photo),字段如下:
    字段名 類型 標(biāo)題
    class 類別 文檔的分類
    photo OLE對(duì)象 保存圖片文件
    photo_ext 文本 圖片的擴(kuò)展名
    inputtime 日期/時(shí)間 文檔輸入的時(shí)間
    modifytime 日期/時(shí)間 文檔的修改時(shí)間
    subject 文本 文本
    現(xiàn)在我們就可以創(chuàng)建finput窗口文件來(lái)保存圖片。
    首先我們要連接我們的數(shù)據(jù)庫(kù),代碼如下:
    Dim cnstr As String
    cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;" _
    & "Data Source=" & App.Path & "\realize.mdb;Jet OLEDB:database "
    cn.Open cnstr
    cn.CursorLocation = adUseClient
    這段代碼可以放在form_load事件中,當(dāng)做一個(gè)多窗口的系統(tǒng)時(shí),放到一個(gè)模塊文件中,這樣在其它窗口中都可以調(diào)用這個(gè)cn連接。
    下面是具體的窗口代碼:
    VERSION 5.00
    Object= "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx"
    Object= "{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"; "richtx32.ocx"
    Begin VB.Form finput
    BorderStyle = 0 'None
    Caption = "文檔輸入"
    ClientHeight = 6240
    ClientLeft = 0
    ClientTop = 0
    ClientWidth = 8955
    ControlBox = 0 'False
    LinkTopic = "Form1"
    MDIChild = -1 'True
    ScaleHeight = 6240
    ScaleWidth = 8955
    ShowInTaskbar = 0 'False
    Begin MSComDlg.CommonDialog CommonDialog1
    Left = 8040
    Top = 3840
    _ExtentX = 847
    _ExtentY = 847
    _Version = 393216
    End
    Begin VB.ComboBox Combo1
    Height = 300
    Left = 7080
    TabIndex = 10
    Top = 480
    Width = 1335
    End
    Begin VB.CommandButton Command3
    Caption = "關(guān)閉"
    Height = 375
    Left = 5280
    TabIndex = 8
    Top = 5640
    Width = 1095
    End
    Begin VB.CommandButton Command2
    Caption = "保存"
    Height = 375
    Left = 2520
    TabIndex = 7
    Top = 5640
    Width = 1095
    End
    Begin VB.CommandButton Command1
    Caption = "瀏覽"
    Height = 255
    Left = 8040
    TabIndex = 6
    Top = 4800
    Width = 735
    End