VB数据库操作实例.docx
《VB数据库操作实例.docx》由会员分享,可在线阅读,更多相关《VB数据库操作实例.docx(8页珍藏版)》请在冰点文库上搜索。
![VB数据库操作实例.docx](https://file1.bingdoc.com/fileroot1/2023-5/26/08326950-f40a-4a1f-b000-b0a38f9fca71/08326950-f40a-4a1f-b000-b0a38f9fca711.gif)
VB数据库操作实例
VB数据库操作实例
2008年02月22日05:
49
VB数据库操作对很多初学者朋友感到比较吃力,目前教材中的实例对数据库操作都比较单一,很多朋友提议我做一个包括浏览、添加、修改、删除功能的数据库操作实例,下面这个实例就是一个这样的数据库操作实例。
《书库管理系统》是一个最简单的数据库操作实例,它包括浏览、添加、修改、删除功能的数据库操作,使用数据链接控件Adodc链接数据库、数据显示控件MSHFlexGrid显示数据库中的记录。
在新建工程时工具箱中是没有Adodc控件和MSHFlexGrid控件的,我们必须点击菜单中的【工程】-【部件】,在对话框中勾选“MicrosoftADODataControl6.0(SP6)”和“MicrosoftHierarchicalFlexGridControl6.0(SP4)”,最后点击【确定】,这样Adodc控件和MSHFlexGrid控件就已经放置在工具箱中了。
其中Adodc控件的ConnectionString属性值是:
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=家庭书架.mdb;PersistSecurityInfo=False",它设置链接了“家庭书架.mdb”这个Access数据库,RecordSourc属性值是:
"select图书登记表.ID,图书登记表.名称,图书登记表.书号,图书登记表.作者,图书登记表.出版社,图书登记表.出借状态,出借记录.借书人,出借记录.电话,出借记录.地址,图书登记表.备注,图书登记表.出借记录from图书登记表,出借记录where图书登记表.ID=出借记录.zhuIDORDERBY图书登记表.ID",因为在“家庭书架.mdb”数据库中包含"图书登记表"和"出借记录"二个数据表,这是多表链接的典型的SQL语句。
Adodc的这二个属性值在VB的属性窗口进行编辑,你可以将上述属性值直接输入到相应的属性中,设置Visible的值为False,目的是在运行中不显示这个控件,其他属性默认值即可。
MSHFlexGrid控件的名称我们修改为MS1,它的属性设置稍稍比较麻烦:
首先将它的DataSource属性在属性窗口设置为"Adodc1";
然后在对象窗口右击控件,在下拉菜单中点击【属性】,在“通用”标签中修改行为3,修改列为11,修改固定行为0,修改固定列为0,如果数据链接没有问题,在属性的“带区”标签中可以看到列标题和列名称已经设置了,其他属性页的属性可以容许默认值,中点击【确定】即可。
另外在属性窗口设置MSHFlexGrid控件的BackColorBkg属性为&H00FFE0E0&,这个属性是控件底色的设置,然后设置BackColorFixed属性为&H00C0FFFF&,这个属性是控件数据显示标题的底色。
其他默认值即可。
最后放置三个按钮,一个标签,三个Frame控件,在Frame1、Frame2、Frame3控件中分别放置9个标签(数组),8个文本框,一个下拉选择框,一个按钮,在Frame2、Frame3控件中分别放置一个标签,设置这个标签的Visible值为False,其他设置参考下图:
设置和调整控件如上图后,设置数据库,在程序目录新建一个Access数据库,修改数据库的名称为“家庭书架.mdb”,新建二个数据表,分别是:
“图书登记表”和“出借记录”:
在“图书登记表”中添加字段:
“ID”为自动编号、主键,“名称”为文本、大小50,“书号”为文本、大小30,“作者”为文本、大小40,“出版社”为文本、大小60,“出借状态”为文本、大小20,“出借记录”为数字、长整型,“备注”为文本、大小50;
在“出借记录”中添加字段:
“ID”为自动编号、主键,“zhuID”为数字、长整型,“名称”为文本、大小50,“借书人”为文本、大小20,“电话”为文本、大小20,“地址”为文本、大小50。
数据库设置成功。
最后点击【视图】-【代码窗口】输入下面的代码:
'模块级变量
DimZFCAsString
DimROSXAsInteger
'-------------------------------------
'添加记录事件
PrivateSubCommand1_Click()
'添加记录
DimFLAsString,XIDAsLong
FL=App.Path&"\家庭书架.mdb"
Setconn=OpenDatabase(FL)
strSQL="Select*From图书登记表"
Setrs=conn.OpenRecordset(strSQL)
rs.AddNew
rs!
名称=Text1(0).Text
rs!
书号=Text1
(1).Text
rs!
作者=Text1
(2).Text
rs!
出版社=Text1(3).Text
rs!
出借状态=Combo1.Text
rs!
备注=Text1(7).Text
IfCombo1.Text="出借"Thenrs!
出借记录=1
rs.Update
rs.Close
Setrs=Nothing
strSQL="Select*From图书登记表OrderByIDDesc"
Setrs=conn.OpenRecordset(strSQL)
XID=rs!
ID
rs.Close
Setrs=Nothing
strSQL="Select*From出借记录"
Setrs=conn.OpenRecordset(strSQL)
IfCombo1.Text="出借"Then
rs.AddNew
rs!
zhuID=XID
rs!
名称=Text1(0).Text
rs!
借书人=Text1(4).Text
rs!
电话=Text1(5).Text
rs!
地址=Text1(6).Text
rs.Update
Else
rs.AddNew
rs!
zhuID=XID
rs!
名称=""
rs!
借书人="没有出借"
rs!
电话="无"
rs!
地址="无"
rs.Update
EndIf
rs.Close
Setrs=Nothing
conn.Close
MsgBox"记录添加成功!
"
UnloadMe
书库管理.Show
EndSub
'-------------------------------------
'修改记录事件
PrivateSubCommand2_Click()
'修改记录
IfVal(Label4.Caption)=0Then
MsgBox"没有选择要修改的记录!
"
ExitSub
EndIf
DimFLAsString
FL=App.Path&"\家庭书架.mdb"
Setconn=OpenDatabase(FL)
strSQL="Select*From图书登记表WhereID="&Val(Label4.Caption)&""
Setrs=conn.OpenRecordset(strSQL)
rs.Edit
rs!
名称=Text2(0).Text
rs!
书号=Text2
(1).Text
rs!
作者=Text2
(2).Text
rs!
出版社=Text2(3).Text
rs!
出借状态=Combo2.Text
rs!
备注=Text2(7).Text
IfCombo2.Text="出借"Thenrs!
出借记录=1
rs.Update
rs.Close
Setrs=Nothing
strSQL="Select*From出借记录WherezhuID="&Val(Label4.Caption)&""
Setrs=conn.OpenRecordset(strSQL)
IfCombo2.Text="出借"Then
IfNotrs.EOFThen
rs.Edit
rs!
名称=Text2(0).Text
rs!
借书人=Text2(4).Text
rs!
电话=Text2(5).Text
rs!
地址=Text2(6).Text
rs.Update
Else
rs.AddNew
rs!
zhuID=Val(Label4.Caption)
rs!
名称=Text2(0).Text
rs!
借书人=Text2(4).Text
rs!
电话=Text2(5).Text
rs!
地址=Text2(6).Text
rs.Update
EndIf
Else
IfNotrs.EOFThen
rs.Edit
rs!
名称=Text2(0).Text
rs!
借书人="没有出借"
rs!
电话="无"
rs!
地址="无"
rs.Update
Else
rs.AddNew
rs!
zhuID=Val(Label4.Caption)
rs!
名称=Text2(0).Text
rs!
借书人="没有出借"
rs!
电话="无"
rs!
地址="无"
rs.Update
EndIf
EndIf
rs.Close
Setrs=Nothing
conn.Close
MsgBox"记录修改成功!
"
Label4.Caption=""
UnloadMe
书库管理.Show
EndSub
'-------------------------------------
'添加记录连接
PrivateSubCommand3_Click()
Frame1.Visible=True
Frame2.Visible=False
Frame3.Visible=False
ZFC="添加"
Fori=0To7
Text1(i).Text=""
Nexti
Combo1.Text=""
Command1.Visible=True
Label5.Caption="现在正在添加图书资料"
EndSub
'-------------------------------------
'修改记录连接
PrivateSubCommand4_Click()
Frame1.Visible=False
Frame2.Visible=True
Frame3.Visible=False
ZFC="修改"
Fori=0To7
Text2(i).Text=""
Nexti
Combo2.Text=""
Label4.Caption=""
Command2.Visible=True
Label5.Caption="现在正在修改图书资料"
EndSub
'-------------------------------------
'删除记录连接
PrivateSubCommand5_Click()
Frame1.Visible=False
Frame2.Visible=False
Frame3.Visible=True
ZFC="删除"
Fori=0To7
Text3(i).Text=""
Nexti
Combo3.Text=""
Label1.Caption=""
Command6.Visible=True
Label5.Caption="现在正在删除图书资料"
EndSub
'-------------------------------------
'删除记录事件
PrivateSubCommand6_Click()
'删除记录
DimSSAsInteger
SS=MsgBox("确实要删除这个记录吗?
",vbOKCancel,"删除确认!
")
IfSS=1Then
IfVal(Label1.Caption)=0Then
MsgBox"没有选择要修改的记录!
"
ExitSub
EndIf
DimFLAsString,XIDAsLong
FL=App.Path&"\家庭书架.mdb"
Setconn=OpenDatabase(FL)
strSQL="Select*From图书登记表WhereID="&Val(Label1.Caption)&""
Setrs=conn.OpenRecordset(strSQL)
rs.Delete
rs.Close
Setrs=Nothing
strSQL="Select*From出借记录WherezhuID="&Val(Label1.Caption)&""
Setrs=conn.OpenRecordset(strSQL)
rs.Delete
rs.Close
Setrs=Nothing
conn.Close
MsgBox"记录删除成功!
"
UnloadMe
书库管理.Show
Else
MsgBox"取消了删除记录!
"
EndIf
EndSub
'-------------------------------------
'页面启动事件
PrivateSubForm_Load()
DimstrSQLAsString
Frame1.Visible=False
Frame2.Visible=False
Frame3.Visible=False
Label5.Caption="现在正在浏览图书资料"
MS1.BackColorBkg=&HFFE0E0
EndSub
'-------------------------------------
'点击MSHFlexGrid控件中记录的事件
PrivateSubMS1_Click()
DimiAsInteger,COLXAsInteger
COLX=MS1.Col
ROSX=MS1.Row
IfZFC="添加"Then
Fori=0To7
Text1(i).Text=""
Nexti
Combo1.Text=""
ElseIfZFC="修改"Then
Text2(0).Text=MS1.TextMatrix(ROSX,1)
Text2
(1).Text=MS1.TextMatrix(ROSX,2)
Text2
(2).Text=MS1.TextMatrix(ROSX,3)
Text2(3).Text=MS1.TextMatrix(ROSX,4)
Combo2.Text=MS1.TextMatrix(ROSX,5)
Text2(4).Text=MS1.TextMatrix(ROSX,6)
Text2(5).Text=MS1.TextMatrix(ROSX,7)
Text2(6).Text=MS1.TextMatrix(ROSX,8)
Text2(7).Text=MS1.TextMatrix(ROSX,9)
Label4.Caption=MS1.TextMatrix(ROSX,0)
Label5.Caption="已经选择记录准备修改"
ElseIfZFC="删除"Then
Text3(0).Text=MS1.TextMatrix(ROSX,1)
Text3
(1).Text=MS1.TextMatrix(ROSX,2)
Text3
(2).Text=MS1.TextMatrix(ROSX,3)
Text3(3).Text=MS1.TextMatrix(ROSX,4)
Combo3.Text=MS1.TextMatrix(ROSX,5)
Text3(4).Text=MS1.TextMatrix(ROSX,6)
Text3(5).Text=MS1.TextMatrix(ROSX,7)
Text3(6).Text=MS1.TextMatrix(ROSX,8)
Text3(7).Text=MS1.TextMatrix(ROSX,9)
Label1.Caption=MS1.TextMatrix(ROSX,0)
Label5.Caption="已经选择记录准备删除"
ElseIfZFC=""Then
CL=MS1.Col
Fori=1ToMS1.Cols
MS1.Col=i-1
MS1.CellBackColor=vbWhite
Nexti
MS1.Col=CL
EndIf
MS1.Col=C0LX
MS1.CellBackColor=&H119911
EndSub
'-------------------------------------
'离开该行时将该行的颜色恢复为白色的事件
PrivateSubMS1_LeaveCell()
DimiAsInteger
DimCLAsInteger
'离开该行时将该行的颜色恢复为白色
CL=MS1.Col
Fori=1ToMS1.Cols
MS1.Col=i-1
MS1.CellBackColor=vbWhite
Nexti
MS1.Col=CL
EndSub
下面是出现运行的情况: