Vb保存一幅图到Access数据库Word格式.docx
《Vb保存一幅图到Access数据库Word格式.docx》由会员分享,可在线阅读,更多相关《Vb保存一幅图到Access数据库Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
subject文本文本
现在我们就可以创建finput窗口文件来保存图片。
首先我们要连接我们的数据库,代码如下:
DimcnstrAsString
cnstr="
Provider=Microsoft.Jet.OLEDB.4.0;
PersistSecurityInfo=False;
"
_
amp;
"
DataSource="
amp;
App.Pathamp;
\realize.mdb;
JetOLEDB:
database"
cn.Opencnstr
cn.CursorLocation=adUseClient
这段代码可以放在form_load事件中,当做一个多窗口的系统时,最好放到一个模块文件中,这样在其它窗口中都可以调用这个cn连接。
下面是具体的窗口代码:
VERSION5.00
Object="
{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"
;
comdlg32.ocx"
{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"
richtx32.ocx"
BeginVB.Formfinput
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'
BeginMSComDlg.CommonDialogCommonDialog1
Left=8040
Top=3840
_ExtentX=847
_ExtentY=847
_Version=393216
End
BeginVB.ComboBoxCombo1
Height=300
Left=7080
TabIndex=10
Top=480
Width=1335
End
BeginVB.CommandButtonCommand3
关闭"
Height=375
Left=5280
TabIndex=8
Top=5640
Width=1095
BeginVB.CommandButtonCommand2
保存"
Left=2520
TabIndex=7
BeginVB.CommandButtonCommand1
浏览"
Height=255
TabIndex=6
Top=4800
Width=735
BeginVB.TextBoxText2
Left=1200
TabIndex=5
Width=6375
BeginRichTextLib.RichTextBoxRichTextBox1
Height=3615
TabIndex=3
Top=960
_ExtentX=11245
_ExtentY=6376
_Version=393217
Enabled=-1'
TextRTF=$"
finput.frx"
:
0000
BeginVB.TextBoxText1
TabIndex=2
Top=443
Width=4695
BeginVB.LabelLabel4
类别"
Left=6240
TabIndex=9
Width=615
BeginVB.LabelLabel3
图片"
Left=480
TabIndex=4
Width=495
BeginVB.LabelLabel2
内容"
TabIndex=1
BeginVB.LabelLabel1
标题"
TabIndex=0
Top=503
AttributeVB_Name="
finput"
AttributeVB_GlobalNameSpace=False
AttributeVB_Creatable=False
AttributeVB_PredeclaredId=True
AttributeVB_Exposed=False
OptionExplicit
PrivateSubCommand1_Click()
CommonDialog1.DefaultExt=App.Path
CommonDialog1.Filter="
Pictures(*.bmp;
*.jpg;
*.gif) *.bmp;
*.gif"
'
注意要加引号
CommonDialog1.ShowOpen
Text2.Text=CommonDialog1.FileName
EndSub
'
保存文档的标题,和文档的内容,以及相应的图片
PrivateSubCommand2_Click()
判断是否所写的文档是否已经存在数据库了,如果没有,则保存,否则
不能保存(利用一个"
临时rs"
查询标题)
Dimsubject,sqlAsString
Dimtemp_photoAsStream
DimrsAsNewADODB.Recordset
Dimrs1AsNewADODB.Recordset'
定义rs1得到类别的id
Dimclass_idAsInteger'
定义得到类别的ID号
subject=Trim(Text1.Text)'
获得标题
sql="
select*frompaperwheresubject='
+subject+"
'
开始查询
rs.Opensql,cn,adOpenDynamic,adLockPessimistic
判断标题是否存在
Ifrs.EOFThen'
文档不存在,开始保存
DimtempdateAsDate'
临时时间变量
tempdate=Date
rs.AddNew
得到类别的ID
selectcl_number,classfromclasswhereclass='
+Combo1.Text+"
rs1.Opensql,cn,adOpenDynamic,adLockPessimistic
rs("
class"
)=rs1("
cl_number"
)
rs1.Close'
关闭rs1
subject"
)=subject
content"
)=RichTextBox1.Text
IfTrim(Text2.Text)<
>
Then'
假如有图片,开始得到图片文件
Dimimage_data()AsByte'
定义图片保存的变量
OpenTrim(Text2.Text)ForBinaryAs#1
ReDimimage_data(LOF
(1)-1)
Get#1,,image_data()
photo"
).AppendChunkimage_data()
EndIf
inputtime"
)=tempdate
modifytime"
rs.Update'
可能出现保存不成功的现象,所以要考虑可能会出现错误
MsgBox("
保存成功!
)'
保存成功
Text1.Text="
RichTextBox1.Text="
Text2.Text="
此处清空选择图片的框
Else'
存在,不能保存,显示错误信息
文档已经存在,不能保存,请修改!
EndIf
rs.Close'
关闭结果集
PrivateSubCommand3_Click()
UnloadMe
EndSub
PrivateSubForm_Load()
Me.Left=0
Me.Top=0
fmain.Width=Me.Width+340
fmain.Height=Me.Height+1550
显示文档的类别
DimsqlAsString
select*fromclass"
rs.Opensql,cn,1,1
DoWhileNotrs.EOF'
类别不空,则添加进去,对应类别的number为索引
Combo1.AddItemrs("
rs.MoveNext
Loop
Ifrs.RecordCount<
0Then'
只有查询结果集不为空时,才能设定显示第一项,利用纪录总数不为0判定
Combo1.ListIndex=0'
不能用notrs.eof判定,因为现在cursor已经到了最后
rs.Close
当然,在上面这段代码中,还用到了另一个表(表名为class),字段如下:
字段名类型意义
class文本文档类别的名称
cl_number数字类别的编号
上面的代码可以较好的保存我们的文档和图片,我们还需要显示我们的图片和文档,现在我们还要显示我们的图片,我做了一个显示窗口(fshow),现在我假设数据库中有一条记录,subject为"
ipx协议简介"
,里面有一个图片(ipx体系结构),窗口代码如下:
VERSION5.00
Object="
{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"
mscomctl.ocx"
BeginVB.Formfshow
显示图片"
ClientHeight=7125
ClientWidth=10275
ScaleHeight=7125
ScaleWidth=10275
BeginVB.FrameFrame2
Height=6615
Left=2880
Top=240
Width=7335
Left=5880
Top=5880
Width=1215
Height=4095
Left=120
Top=1200
Width=6975
_ExtentX=12303
_ExtentY=7223
fshow.frx"
BeginVB.ImageImage1
Height=855
Stretch=-1'
BeginVB.LineLine4
X1=5520
X2=5520
Y1=5520
Y2=6600
BeginVB.LineLine3
X1=0
X2=7320
Y1=5520
Y2=5520
BeginVB.LineLine2
Y1=960
Y2=960
BackColor=amp;
H80000009amp;
Height=615
Width=7095
BeginVB.FrameFrame1
Height=6735
Width=2535
BeginMSComctlLib.TreeViewTreeView1
Height=6375
Width=2295
_ExtentX=4048
_ExtentY=11245
PathSeparator="
Style=7
Appearance=1
BeginVB.LineLine1
BorderColor=amp;
H80000001amp;
X1=2760
X2=2760
Y1=120
Y2=6960
fshow"
PrivateSubCommand1_Click()
Dimtemptop,templeftAsLong
fmain.Top=(Screen.Height-fmain.Height)/2
fmain.Left=(Screen.Width-fmain.Width)/2
'
显示结果
Dimimage_filenameAsString
Dimtemp_image()AsByte
ipx协议简介'
rs.Opensql,cn,adOpenDynamic,adLockReadOnly
Label1.Caption=rs("
temp_image()=rs("
image_filename=App.Path+"
\temp."
+rs("
photo_ext"
建立临时文件
Openimage_filenameForBinaryAs#1
Put#1,,temp_image()
Close#1
Image1.Picture=LoadPicture(image_filename)
删除临时文件
Killimage_filename
上面代码只能显示一条记录,而且需要先赋条件,显示图片用的是先建一个临时文件,然后把二进制数据读到这个文件里,同时要赋给正确的扩展名,然后可以显示图片,注意,要及时删除临时文件。
总结:
这种方法只是保存图片的其中一种,还有其它保存到数据库的方法,希望大家不断的交流其它的保存图片的方法。