利用Vb保存一幅圖到Access數據庫-_第1頁
利用Vb保存一幅圖到Access數據庫-_第2頁
利用Vb保存一幅圖到Access數據庫-_第3頁
利用Vb保存一幅圖到Access數據庫-_第4頁
利用Vb保存一幅圖到Access數據庫-_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、在我們做的許多管理系統中,除了保存大量的文字信息以外,有時候也需要保存一定數量的圖片。例如:一個人事管理系統,就需要對每個人的照片進行保存,以便可以方便的對每個人的信息進行處理。Office中的Access數據庫除了保存文本,還可以保存圖片,保存圖片的數據類型就是"OLE對象":它用來保存 Excel 電子表格、 Word 文檔、圖形、聲音或其他二進制數據。我現在用一個例子介紹利用vb保存圖片的方法,首先我們要介紹vb中處理二進制數據的語句:Put、Get。Put、Get語句語法如下:Put # filenumber,recnumber,varnameGet # filen

2、umber,recnumber,varnameFilenumber :必需的。任何有效的文件號Recnumber :可選的。Variant(Long。記錄號(Random方式的文件或字節數(Binary 方式的文件,指明在此處開始寫入Varname :必需的。包含要寫入磁盤的數據的變量名說明:文件中的第一個記錄或字節位于位置1,第二個記錄或字節位于位置2,依次類推。若省略recnumber,則將上一個Get或Put語句之后的下一個記錄或字節寫入。所有用于分界的逗號都必須羅列出來。現在我們來開始建一個工程,功能是保存一個文檔,同時可以保存一幅圖片。首先我們建一個表(表名為photo,字段如下:字

3、段名類型標題class 類別文檔的分類photo OLE對象保存圖片文件photo_ext 文本圖片的擴展名inputtime 日期/時間文檔輸入的時間modifytime 日期/時間文檔的修改時間subject 文本文本現在我們就可以創建finput窗口文件來保存圖片。首先我們要連接我們的數據庫,代碼如下:Dim cnstr As Stringamp; "Data Source=" amp; App.Path amp; "realize.mdb;Jet OLEDB:database "cn.Open cnstrcn.CursorLocation = a

4、dUseClient這段代碼可以放在form_load事件中,當做一個多窗口的系統時,最好放到一個模塊文件中,這樣在其它窗口中都可以調用這個cn連接。下面是具體的窗口代碼:VERSION 5.00Object= "F9043C88-F6F2-101A-A3C9-08002B2F49FB#1.2#0" "comdlg32.ocx"Object= "3B7C8863-D78F-101B-B9B5-04021C009402#1.2#0" "richtx32.ocx"Begin VB.Form finputBorderSt

5、yle = 0 'NoneCaption = "文檔輸入"ClientHeight = 6240ClientLeft = 0ClientTop = 0ClientWidth = 8955ControlBox = 0 'FalseLinkTopic = "Form1"MDIChild = -1 'TrueScaleHeight = 6240ScaleWidth = 8955ShowInTaskbar = 0 'FalseBegin MSComDlg.CommonDialog CommonDialog1 Left = 8040

6、Top = 3840_ExtentX = 847_ExtentY = 847_Version = 393216EndBegin VB.ComboBox Combo1Height = 300Left = 7080TabIndex = 10Top = 480EndBegin VB.CommandButton Command3 Caption = "關閉"Height = 375Left = 5280TabIndex = 8Top = 5640Width = 1095EndBegin VB.CommandButton Command2 Caption = "保存&quo

7、t;Height = 375Left = 2520TabIndex = 7Top = 5640Width = 1095EndBegin VB.CommandButton Command1 Caption = "瀏覽"Height = 255Left = 8040Top = 4800Width = 735EndBegin VB.TextBox Text2Height = 375Left = 1200TabIndex = 5Top = 4800Width = 6375EndBegin RichTextLib.RichTextBox RichTextBox1 Height = 3

8、615Left = 1200TabIndex = 3Top = 960Width = 6375_ExtentX = 11245_ExtentY = 6376_Version = 393217Enabled = -1 'TrueTextRTF = $"finput.frx":0000EndBegin VB.TextBox Text1 Height = 375Left = 1200TabIndex = 2Top = 443Width = 4695EndBegin VB.Label Label4 Caption = "類別" Height = 255L

9、eft = 6240TabIndex = 9Top = 480Width = 615EndBegin VB.Label Label3 Caption = "圖片" Height = 255Left = 480TabIndex = 4Top = 4800Width = 495EndBegin VB.Label Label2Caption = "內容"Height = 255Left = 480TabIndex = 1Top = 960Width = 495EndBegin VB.Label Label1Caption = "標題"Hei

10、ght = 255Left = 480TabIndex = 0Top = 503Width = 495EndEndAttribute VB_Name = "finput" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = FalseOption ExplicitPrivate Sub Command1_Click(CommonDialog1.DefaultExt = App.Pat

11、hCommonDialog1.Filter = "Pictures (*.bmp;*.jpg;*.gif *.bmp;*.jpg;*.gif" '注意要加引號CommonDialog1.ShowOpenText2.Text = CommonDialog1.FileNameEnd Sub'保存文檔的標題,和文檔的內容,以及相應的圖片Private Sub Command2_Click('判斷是否所寫的文檔是否已經存在數據庫了,如果沒有,則保存,否則'不能保存(利用一個"臨時rs"查詢標題Dim subject, sql As

12、 StringDim temp_photo As StreamDim rs As New ADODB.RecordsetDim rs1 As New ADODB.Recordset '定義rs1得到類別的idDim class_id As Integer '定義得到類別的ID號subject = Trim(Text1.Text '獲得標題sql = "select * from paper where subject='" + subject + "'"'開始查詢rs.Open sql, cn, adOpe

13、nDynamic, adLockPessimistic'判斷標題是否存在If rs.EOF Then '文檔不存在,開始保存Dim tempdate As Date '臨時時間變量tempdate = Daters.AddNew'得到類別的IDsql = "select cl_number,class from class where class='" + Combo1.Text + "'" rs1.Open sql, cn, adOpenDynamic, adLockPessimisticrs("

14、;class" = rs1("cl_number"rs1.Close '關閉rs1rs("subject" = subjectrs("content" = RichTextBox1.TextIf Trim(Text2.Text <> "" Then '假如有圖片,開始得到圖片文件Dim image_data( As Byte '定義圖片保存的變量Open Trim(Text2.Text For Binary As #1ReDim image_data(LOF(1 - 1

15、Get #1, , image_data(rs("photo".AppendChunk image_data(End Ifrs("inputtime" = tempdaters("modifytime" = tempdaters.Update '可能出現保存不成功的現象,所以要考慮可能會出現錯誤MsgBox ("保存成功!" '保存成功Text1.Text = ""RichTextBox1.Text = ""Text2.Text = ""

16、'此處清空選擇圖片的框Else '存在,不能保存,顯示錯誤信息MsgBox ("文檔已經存在,不能保存,請修改!"End Ifrs.Close '關閉結果集End SubPrivate Sub Command3_Click(Unload MeEnd SubPrivate Sub Form_Load(Me.Left = 0Me.Top = 0fmain.Width = Me.Width + 340fmain.Height = Me.Height + 1550'顯示文檔的類別Dim rs As New ADODB.RecordsetDim sql

17、 As Stringsql = "select * from class"rs.Open sql, cn, 1, 1Do While Not rs.EOF '類別不空,則添加進去,對應類別的number為索引Combo1.AddItem rs("class"rs.MoveNextLoopIf rs.RecordCount <> 0 Then '只有查詢結果集不為空時,才能設定顯示第一項,利用紀錄總數不為0判定Combo1.ListIndex = 0 '不能用not rs.eof判定,因為現在cursor已經到了最后En

18、d Ifrs.CloseEnd Sub當然,在上面這段代碼中,還用到了另一個表(表名為class,字段如下:字段名類型意義class 文本文檔類別的名稱cl_number 數字類別的編號上面的代碼可以較好的保存我們的文檔和圖片,我們還需要顯示我們的圖片和文檔,現在我們還要顯示我們的圖片,我做了一個顯示窗口(fshow,現在我假設數據庫中有一條記錄,subject為"ipx協議簡介",里面有一個圖片(ipx體系結構,窗口代碼如下:VERSION 5.00Object = "831FDD16-0C5C-11D2-A9FC-0000F8754DA1#2.0#0"

19、; "mscomctl.ocx"Object = "3B7C8863-D78F-101B-B9B5-04021C009402#1.2#0" "richtx32.ocx"Begin VB.Form fshowBorderStyle = 0 'NoneCaption = "顯示圖片"ClientHeight = 7125ClientLeft = 0ClientTop = 0ClientWidth = 10275LinkTopic = "Form1"MDIChild = -1 'Tru

20、eScaleHeight = 7125ScaleWidth = 10275ShowInTaskbar = 0 'FalseBegin VB.Frame Frame2Height = 6615Left = 2880TabIndex = 1Top = 240Width = 7335Begin VB.CommandButton Command1Caption = "關閉"Height = 375Left = 5880TabIndex = 5Top = 5880Width = 1215EndBegin RichTextLib.RichTextBox RichTextBox1

21、 Height = 4095Left = 120TabIndex = 4Width = 6975_ExtentX = 12303_ExtentY = 7223_Version = 393217TextRTF = $"fshow.frx":0000 EndBegin VB.Image Image1 Height = 855Left = 120Stretch = -1 'TrueTop = 5640Width = 1095EndBegin VB.Line Line4X1 = 5520X2 = 5520Y1 = 5520Y2 = 6600EndBegin VB.Line

22、Line3X1 = 0Y1 = 5520Y2 = 5520EndBegin VB.Line Line2X1 = 0X2 = 7320Y1 = 960Y2 = 960EndBegin VB.Label Label1 BackColor = amp;H80000009amp; Height = 615Left = 120TabIndex = 3Top = 240Width = 7095EndEndBegin VB.Frame Frame1Height = 6735Left = 120TabIndex = 0 Top = 240 Width = 2535 Begin MSComctlLib.Tree

23、View TreeView1 Height = 6375 Left = 120 TabIndex = 2 Top = 240 Width = 2295 _ExtentX = 4048 _ExtentY = 11245 _Version = 393217 PathSeparator = "" Style = 7 Appearance = 1 End End Begin VB.Line Line1 BorderColor = amp;H80000001amp; X1 = 2760 X2 = 2760 Y1 = 120 Y2 = 6960 End End Attribute VB

24、_Name = "fshow" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Sub Command1_Click( Unload Me End Sub Private Sub Form_Load( Dim temptop, templeft As Long Me.Left = 0 Me.Top = 0 fmain.Width = Me.Width + 340 fmain.Height = Me

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論