利用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

提交评论