




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025科技有限公司股权转让合同
- 2025关于未到期的房屋租赁合同的处理方式
- 商务写字楼租赁协议及物业管理服务条款约定
- 人民防空心理防护员招聘笔试经典考题含答案
- 清理及保洁分包合同
- 汽车购置税缴纳协议
- 模具形象推广合作协议
- 梦蝶@熙陆华丽蜕变800字11篇
- 社会调查实践:问卷调查的设计与实施教学大纲
- 快递物流行业快递分拣系统开发协议
- 2025年教师招聘小学语文真题及答案
- 2025年(完整版)十八项核心制度培训考核试题(含答案)
- 2025年低压电工理论考试1000题(附答案)
- 2025年益阳市融资担保有限责任公司招聘考试笔试试卷【附答案】
- 【湖南】2025年高考湖南卷化学高考真题+答案
- 2025年中国LCP料数据监测报告
- DGTJ08-2093-2019 电动汽车充电基础设施建设技术标准 含2021年局部修订
- 民政知识教学课件
- DB1301∕T494-2023 城市非机动车停放设施建设及管理规范
- KET教学课件新版
- 乳房恶性肿瘤放疗护理查房
评论
0/150
提交评论