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中运行通过。)