Vb保存一幅图到Access数据库_第1页
Vb保存一幅图到Access数据库_第2页
Vb保存一幅图到Access数据库_第3页
Vb保存一幅图到Access数据库_第4页
Vb保存一幅图到Access数据库_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Vb保存一幅图到Access数据库在我们做的很多管理系统中,除了保存大量的文字信息以外,有时候也需要保存肯定数量的图片。例如:一个人事管理系统,就需要对每个人的照片进行保存,以便可以便利的对每个人的信息进行处理.Office中的Access数据库除了保存文本,还可以保存图片,保存图片的数据类型就是”OLE对象”:它用来保存Excel电子表格、Word文档、图形、声音或其他二进制数据。我现在用一个例子介绍利用vb保存图片的方法,首先我们要介绍vb中处理二进制数据的语句:Put、Get。Put、Get语句语法如下:Put[#]filenumber,[recnumber],varnameGet[#]filenumber,[recnumber],varnameFilenumber:必需的。任何有效的文件号Recnumber:可选的.Variant(Long).记录号(Random方式的文件)或字节数(Binary方式的文件),指明在此处开头写入Varname:必需的.包含要写入磁盘的数据的变量名说明:文件中的第一个记录或字节位于位置1,其次个记录或字节位于位置2,依次类推.若省略recnumber,则将上一个Get或Put语句之后的下一个记录或字节写入.全部用于分界的逗号都必须排列出来.现在我们来开头建一个工程,功能是保存一个文档,同时可以保存一幅图片。首先我们建一个表(表名为photo),字段如下:字段名类型标题class类别文档的分类photoOLE对象保存图片文件photo_ext文本图片的扩展名inputtime日期/时间文档输入的时间modifytime日期/时间文档的修改时间subject文本文本现在我们就可以创建finput窗口文件来保存图片.首先我们要连接我们的数据库,代码如下:DimcnstrAsStringcnstr="Provider=Microsoft。Jet.OLEDB.4.0;PersistSecurityInfo=False;"_amp;"DataSource=”amp;App。Pathamp;"\realize.mdb;JetOLEDB:database"cn.Opencnstrcn。CursorLocation=adUseClient这段代码可以放在form_load大事中,当做一个多窗口的系统时,最好放到一个模块文件中,这样在其它窗口中都可以调用这个cn连接。下面是简略的窗口代码:VERSION5.00Object="{F9043C88-F6F2-101A-A3C9—08002B2F49FB}#1.2#0";”comdlg32.ocx"Object="{3B7C8863—D78F-101B-B9B5—04021C009402}#1.2#0";”richtx32.ocx”BeginVB.FormfinputBorderStyle=0'NoneCaption="文档输入”ClientHeight=6240ClientLeft=0ClientTop=0ClientWidth=8955ControlBox=0'FalseLinkTopic="Form1"MDIChild=-1'TrueScaleHeight=6240ScaleWidth=8955ShowInTaskbar=0’FalseBeginMSComDlg.CommonDialogCommonDialog1Left=8040Top=3840_ExtentX=847_ExtentY=847_Version=393216EndBeginVB。ComboBoxCombo1Height=300Left=7080TabIndex=10Top=480Width=1335EndBeginVB。CommandButtonCommand3Caption="关闭”Height=375Left=5280TabIndex=8Top=5640Width=1095EndBeginVB.CommandButtonCommand2Caption="保存"Height=375Left=2520TabIndex=7Top=5640Width=1095EndBeginVB。CommandButtonCommand1Caption="扫瞄"Height=255Left=8040TabIndex=6Top=4800Width=735EndBeginVB.TextBoxText2Height=375Left=1200TabIndex=5Top=4800Width=6375EndBeginRichTextLib。RichTextBoxRichTextBox1Height=3615Left=1200TabIndex=3Top=960Width=6375_ExtentX=11245_ExtentY=6376_Version=393217Enabled=—1’TrueTextRTF=$"finput.frx":0000EndBeginVB。TextBoxText1Height=375Left=1200TabIndex=2Top=443Width=4695EndBeginVB.LabelLabel4Caption="类别”Height=255Left=6240TabIndex=9Top=480Width=615EndBeginVB.LabelLabel3Caption=”图片"Height=255Left=480TabIndex=4Top=4800Width=495EndBeginVB。LabelLabel2Caption="内容”Height=255Left=480TabIndex=1Top=960Width=495EndBeginVB.LabelLabel1Caption="标题”Height=255Left=480TabIndex=0Top=503Width=495EndEndAttributeVB_Name=”finput"AttributeVB_GlobalNameSpace=FalseAttributeVB_Creatable=FalseAttributeVB_PredeclaredId=TrueAttributeVB_Exposed=FalseOptionExplicitPrivateSubCommand1_Click()CommonDialog1.DefaultExt=App。PathCommonDialog1。Filter=”Pictures(*.bmp;*.jpg;*.gif)*。bmp;*.jpg;*.gif”'注意要加引号CommonDialog1.ShowOpenText2.Text=CommonDialog1.FileNameEndSub'保存文档的标题,和文档的内容,以及相应的图片PrivateSubCommand2_Click()'推断是否所写的文档是否已经存在数据库了,如果没有,则保存,否则'不能保存(利用一个"临时rs”查询标题)Dimsubject,sqlAsStringDimtemp_photoAsStreamDimrsAsNewADODB.RecordsetDimrs1AsNewADODB.Recordset’定义rs1得到类别的idDimclass_idAsInteger'定义得到类别的ID号subject=Trim(Text1。Text)'获得标题sql="select*frompaperwheresubject=’"+subject+"'"'开头查询rs。Opensql,cn,adOpenDynamic,adLockPessimistic’推断标题是否存在Ifrs.EOFThen'文档不存在,开头保存DimtempdateAsDate'临时时间变量tempdate=Daters。AddNew'得到类别的IDsql="selectcl_number,classfromclasswhereclass='"+Combo1.Text+”'”rs1.Opensql,cn,adOpenDynamic,adLockPessimisticrs("class")=rs1("cl_number”)rs1.Close'关闭rs1rs("subject”)=subjectrs("content")=RichTextBox1.TextIfTrim(Text2。Text)<>"”Then'假如有图片,开头得到图片文件Dimimage_data()AsByte'定义图片保存的变量OpenTrim(Text2.Text)ForBinaryAs#1ReDimimage_data(LOF(1)-1)Get#1,,image_data()rs("photo”).AppendChunkimage_data()EndIfrs("inputtime”)=tempdaters("modifytime”)=tempdaters。Update'可能消灭保存不成功的现象,所以要考虑可能会消灭错误MsgBox("保存成功!")'保存成功Text1。Text=""RichTextBox1。Text=”"Text2.Text="”’此处清空选择图片的框Else’存在,不能保存,显示错误信息MsgBox("文档已经存在,不能保存,请修改!”)EndIfrs.Close’关闭结果集EndSubPrivateSubCommand3_Click()UnloadMeEndSubPrivateSubForm_Load()Me.Left=0Me。Top=0fmain.Width=Me。Width+340fmain.Height=Me.Height+1550'显示文档的类别DimrsAsNewADODB.RecordsetDimsqlAsStringsql="select*fromclass”rs。Opensql,cn,1,1DoWhileNotrs.EOF’类别不空,则添加进去,对应类别的number为索引Combo1。AddItemrs("class”)rs.MoveNextLoopIfrs。RecordCount〈>0Then'只有查询结果集不为空时,才能设定显示第一项,利用纪录总数不为0判定Combo1。ListIndex=0'不能用notrs.eof判定,由于现在cursor已经到了最后EndIfrs.CloseEndSub当然,在上面这段代码中,还用到了另一个表(表名为class),字段如下:字段名类型意义class文本文档类别的名称cl_number数字类别的编号上面的代码可以较好的保存我们的文档和图片,我们还需要显示我们的图片和文档,现在我们还要显示我们的图片,我做了一个显示窗口(fshow),现在我假设数据库中有一条记录,subject为"ipx协议简介",里面有一个图片(ipx体系结构),窗口代码如下:VERSION5.00Object=”{831FDD16—0C5C—11D2-A9FC—0000F8754DA1}#2。0#0";”mscomctl.ocx"Object=”{3B7C8863-D78F-101B—B9B5-04021C009402}#1。2#0”;"richtx32。ocx"BeginVB。FormfshowBorderStyle=0’NoneCaption=”显示图片”ClientHeight=7125ClientLeft=0ClientTop=0ClientWidth=10275LinkTopic="Form1"MDIChild=-1’TrueScaleHeight=7125ScaleWidth=10275ShowInTaskbar=0'FalseBeginVB。FrameFrame2Height=6615Left=2880TabIndex=1Top=240Width=7335BeginVB.CommandButtonCommand1Caption=”关闭"Height=375Left=5880TabIndex=5Top=5880Width=1215EndBeginRichTextLib。RichTextBoxRichTextBox1Height=4095Left=120TabIndex=4Top=1200Width=6975_ExtentX=12303_ExtentY=7223_Version=393217TextRTF=$"fshow.frx":0000EndBeginVB.ImageImage1Height=855Left=120Stretch=-1’TrueTop=5640Width=1095EndBeginVB.LineLine4X1=5520X2=5520Y1=5520Y2=6600EndBeginVB。LineLine3X1=0X2=7320Y1=5520Y2=5520EndBeginVB.LineLine2X1=0X2=7320Y1=960Y2=960EndBeginVB.LabelLabel1BackColor=amp;H80000009amp;Height=615Left=120TabIndex=3Top=240Width=7095EndEndBeginVB.FrameFrame1Height=6735Left=120TabIndex=0Top=240Width=2535BeginMSComctlLib.TreeViewTreeView1Height=6375Left=120TabIndex=2Top=240Width=2295_ExtentX=4048_ExtentY=11245_Version=393217PathSeparator=”"Style=7Appearance=1EndEndBeginVB.LineLine1BorderColor=amp;H80000001amp;X1=2760X2=2760Y1=120Y2=6960EndEndAttributeVB_Name="fshow"AttributeVB_GlobalNameSpace=FalseAttributeVB_Creatable=FalseAttributeVB_PredeclaredId=TrueAttributeVB_Exposed=FalseOptionExplicitPrivateSubCommand1_Click()UnloadMeEndSubPrivateSubForm_Load()Dimtemptop,templeftAsLong

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论