VB5.0中数据库查询分析论文
时间:2022-09-17 05:30:00
导语:VB5.0中数据库查询分析论文一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。
摘要:查询模块是数据库管理系统中不可缺少的部分。本文介绍在vb5.0环境下四种数据库查询的实现方法,并主要介绍了使用SELECT-SQL语句来实现数据库的查询功能
关键字:VB5.0数据库表查询SQL
VB全称VisualBasic,是微软公司推出的基于Windows的可视化编程环境,以其简单易学、编程简洁、程序集成化高、功能强大而倍受程序员及广大电脑爱好者的青睐。它在数据库应用方面也有相当强大的功能。
查询模块是数据库管理系统中不可缺少的部分。在VB中进行数据库记录查询操作,根据打开数据库的方式来确定。大概有四种查询方法:SEEK方法查询、FILTER属性查询、Find方法查询、SQL查询。本文对前三种方法只作简单说明,着重介绍第四种SQL查询方法。
1、SEEK方法查询、FILTER属性查询、Find方法查询的简单说明。
用SEEK方法查询:
这种方法只使用于以OPENTABLE方式打开的数据表,而且在查询之前必须要对查询字段建立索引文件,由于已建立了索引文件,所以查询速度快,这种方式结果是将指针移到符合条件的第一个记录。例如:
SETTB=DB.OPENTABLE(“INPUT”)
TB.INDEX=”NAMEINDEX”
TB.SEEK”=”,“石脑油”
用FILTER属性查询:
FILTER属性查询是用来过滤数据的,只要我们给定过滤条件就可以将所需的记录筛选出来。需要说明的是,我们需要将以Filter属性筛选出来的数据集打开才能对其进行操作。例如:
SetDy1=db.CreateDynaset(“input”)
Dy1.Filter=”物资名称like‘石*’”
SetDy2.Dy1.CreateDynaset()
用Find方法查询。
Find查询有Findfirstfindnext两个方法,每次查询到一个记录。例如:
SetDy=db.CreateDynaset(“input”)
S=”到货数量>100and物资名称like‘石脑油’”
Dy.FindfirstS
Dy.FindnextS
2、用SQL查询。
2.1、Select-SQL查询语句的格式:
SQL(STRUCTUREQUERYLANGUAGE)即结构化查询语言,是查询关系型数据库的常用语言。由于SQL语言使用方便、功能丰富、简单易学得到很快的应用和推广,是各种关系型数据库的公用语言。使用SQL查询可以从一个表或多个表或视图中对数据库进行查询(有关SQL的更多信息,请参阅相关书籍,本文不多介绍)。它的核心语句是Select-SQL语句。
Select-SQL查询语句的格式:
SELECT[DICTINCT/ALL]----查询目标列
FROMtableexpression----------表名/视图名
[WHERE]---------------------------条件
[GROUPBY...]--------------------将查询结果的记录分组
[HAVING...]------------------------满足条件的分组
[ORDERBY...]---------------------对查询结果进行排序
下面应用笔者完成的《供应处物资管理软件》为例,。说明使用SELECT-SQL查询语句实现查询模块具体方法。
2.2单项查询模块的实现:
2.2.1应用的数据库in_db.mdb中包含表:input字段名:物资名称、供货单位、供货日期、到货数量、总金额…….等等。
2.2.2定义窗体及控件:如下表
主要控件及名称属性设置说明
Frame(frame1)caption字段选择
Optionbutton(Option1)caption物资名称
字段选择Optionbutton(Option2)caption供货单位
Optionbutton(Option3)caption供货日期
Optionbutton(Option4)caption到货数量
Optionbutton(Option5)caption总金额
Textbox(text1)Text为空查询值
Textbox(text2)Text为空
Commandbutton(command1)caption确定确定本次查询
Commandbutton(command2)caption取消取消本次查询
Commandbutton(command3)caption结束结束查询
Data(data1)Caption数据浏览
databasenamed:\zu_vb\in_db.mdb
Dbgrid(dbgrid1)datasourceData1查询结果显示
如图(1):单项查询模块窗体图
2.2.3编写程序代码:
上述设计完成后,可以对窗体及控件的事件编写代码:
‘变量定义
Dimmy_dbAsDatabaseDimmy_drAsRecordsetDimField_val1AsStringDimField_val3AsDate
DimField_val32AsDate
DimField_val4AsInteger
DimField_val42AsInteger
DimSearch_txtAsInteger
PrivateSubForm_Load()Search_txt=1Text1.Text=""Text2.Text=""Label2.Caption=""EndSub
PrivateSubCommand1_Click()‘确定按钮
SelectCaseSearch_txt
Case1‘若选择“物资名称”
Field_val1=Text1.Text
Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")
Setmy_dr=my_db.OpenRecordset("input")
ss1="select*frominputwhere(物资名称="&"''''"&Field_val1&"'''')"
Data1.RecordSource=ss1
Data1.Refresh
Case2‘若选择“供货单位”
...
Case3‘若选择“供货日期”
Field_val3=Text1.Text
Field_val32=Text2.Text
IfVal(DateDiff("d",(Text1.Text),(Text2.Text)))>=0Then
Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")
Setmy_dr=my_db.OpenRecordset("input")
ss1="select*frominputwhere供货日期between"&"#"_
&Field_val3&"#"_&"and"&"#"&Field_val32&"#"Data1.RecordSource=ss1Data1.RefreshElsezz=MsgBox("您输入的起始日期比终止日期大,请重新输入!",vbCritical,"严重警告,输入无效!")
EndIf
Case4‘若选择“到货数量”
Field_val4=Text1.Text
Field_val42=Text2.Text
Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")
Setmy_dr=my_db.OpenRecordset("input")
ss1="select*frominputwhere到货数量between"&Field_val4_
&"and"&Field_val42
Data1.RecordSource=ss1
Data1.Refresh
Case5
...
EndSelect
EndSub
PrivateSubCommand2_Click()‘取消查询
Text1.Text=""
Text2.Text=""
EndSub
PrivateSubCommand3_Click()‘结束查询
UnloadMe
EndSub
PrivateSubOption1_Click()‘选定“物资名称”字段
Search_txt=1
Text1.Text=""
Label2.Caption=""
Text2.Enabled=False‘text2设为无效
Text2.Visible=False‘text2设为不显示
Text1.SetFocus
EndSub
PrivateSubOption2_Click()‘选定“供货单位”字段
(略)
EndSub
PrivateSubOption3_Click()‘选定“供货日期”字段Search_txt=3Text1.Text=""Text1.Text=Date‘起始日期Text2.Text=Date‘终止日期
Label2.Caption="至"
Text2.Enabled=True
Text2.Visible=True
Text1.SetFocus
EndSub
PrivateSubOption4_Click()‘选定“到货数量”字段
Search_txt=4
Text1.Text=""
Text2.Text=""
Text1.Text=Format(Text1.Text,"###,###,##0.00")‘设置字段格式为数值型
Text2.Text=Format(Text2.Text,"###,###,##0.00")‘设置字段格式为数值型
Label2.Caption="至"
Text2.Enabled=True
Text2.Visible=True
Text1.SetFocus
EndSub
PrivateSubOption5_Click()‘选定“总金额”字段
(略)
EndSub
PrivateSubText1_LostFocus()
‘判断如果选定的是“供货日期”字段,text1的输入值必须是日期型的IfSearch_txt=3Then
IfNotIsDate(Text1.Text)Then
z=MsgBox("非法日期!请重新输入!",vbCritical,"严重警告,输入无效!")
Text1.SetFocus
EndIf
EndIf
EndSub
PrivateSubText2_LostFocus()
‘判断如果选定的是“供货日期”字段,text2的输入值必须是日期型的
IfSearch_txt=3Then
Text2.Text=Format(Text2.Text,"yyyy-mm-dd")
IfNotIsDate(Text2.Text)Then
z=MsgBox("非法日期!请重新输入!",vbCritical,"严重警告,输入无效!")
Text2.SetFocus
EndIf
EndIf
EndSub
2.3多项复合查查询模块的实现:
2.3.1应用的数据库in_db.mdb中包含表:input字段名:物资名称、供货单位、供货日期、到货数量、总金额…….等等。
2.3.2定义窗体及控件:如下表主要控件及名称属性设置说明
Frame(frame1)caption查询条件选择
ComboBoxcaption为空物资名称选择
TextBox(text1)Text为空起始日期
TextBox(text2)Text为空终止日期
CommandButton(command1)caption确定确定本次查询
CommandButton(command2)caption结束结束查询
Data(data1)Caption数据浏览
databasenamed:\zu_vb\in_db.mdb
DbBrid(dbgrid1)datasourceData1查询结果显示
如图(2)多项查询模块窗体图
2.3.3编写程序代码:
上述设计完成后,可以对窗体及控件的事件编写代码:
下面程序可实现“物资名称”为某值,供货日期在一定范围的采购明细的查询。
‘定义变量
Dimmy_dbAsDatabaseDimmy_drAsRecordsetDimcom_txtAsStringDimtxt1AsDateDimtxt2AsDatePrivateSubCommand1_Click()
‘判断如果输入值不是日期型的,是无效值IfNotIsDate(Text1.Text)Thenz=MsgBox("非法起始日期,请重新输入!",vbCritical,"严重警告,输入无效!")
Text1.SetFocus
Else
IfNotIsDate(Text2.Text)Then
z=MsgBox("非法终止日期,请重新输入!",vbCritical,"严重警告,输入无效!")
Text2.SetFocus
Else
IfVal(DateDiff("d",(Text1.Text),(Text2.Text)))>=0Then
''''''''''''*****设置条件*********
com_txt=bo1.Text
txt1=Form5.Text1.Text
txt2=Form5.Text2.Text
Setmy_db=OpenDatabase("d:\zu_vb\in_db.mdb")
Setmy_dr=my_db.OpenRecordset("input")
ww1="select*frominputwhere(物资名称="&"''''"&com_txt&"''''"_
…&"and(供货日期between"&"#"&txt1&"#"_
&"and"&"#"&txt2&"#))"
Data1.RecordSource=ww1
Data1.Refresh
Else
zz=MsgBox("您输入的起始日期比终止日期大,请重新输入!",vbCritical,"严重警告,输入无效!")
EndIf
EndIf
EndIf
EndSub
PrivateSubForm_Load()
‘将项目“石脑油”、轻烃、纯苯………添加到combo1控件中
Combo1.AddItem"石脑油"
Combo1.AddItem"轻烃"
Combo1.AddItem"纯苯"
Combo1.AddItem"丙烯腈"
Combo1.AddItem"甲基丙烯酸甲脂"
Combo1.AddItem"聚丁二烯乳胶"
Combo1.AddItem"C2"
Combo1.AddItem"C3/C4"
Combo1.AddItem"C5"
Combo1.AddItem"盐酸"
Combo1.AddItem"液碱"
Combo1.Text="石脑油"‘设置combo1的初始值
Text1.Text=Date‘设置text1text2为日期形式,执行时并显示当前日期。
Text2.Text=Date
EndSub
3、结束语:
本文对VB数据库查询功能做了简单的说明,特别对Select-SQL语句进行了详细的介绍,为了节省篇幅,以上只给出了窗体控件的属性和代码的核心部分,并去掉了许多修饰性的内容,感兴趣的读者在此基础上稍加扩充或修改,便可得到更完善的通用查询模块。(以上程序均在WINDOWS98环境下VB5.0中运行通过。)
- 上一篇:党风廉政建设暨反腐败工作会讲话
- 下一篇:市反腐倡廉教育大会讲话