VB5.0中数据库查询模块的实现

时间:2024-09-20 23:56:13 计算机毕业论文 我要投稿
  • 相关推荐

VB5.0中数据库查询模块的实现

摘要:查询模块是数据库管理系统中不可缺少的部分。本文介绍在VB5.0环境下四种数据库查询的实现方法,并主要介绍了使用SELECT-SQL语句来实现数据库的查询功能

关键字:VB5.0 数据库 表 查询 SQL

VB全称Visual Basic,是微软公司推出的基于Windows的可视化编程环境,以其简单易学、编程简洁、程序集成化高、功能强大而倍受程序员及广大电脑爱好者的青睐。它在数据库应用方面也有相当强大的功能。

查询模块是数据库管理系统中不可缺少的部分。在VB中进行数据库记录查询操作,根据打开数据库的方式来确定。大概有四种查询方法:SEEK方法查询、FILTER 属性查询、Find 方法查询、SQL查询。本文对前三种方法只作简单说明,着重介绍第四种SQL查询方法。

1、SEEK方法查询、FILTER 属性查询、Find 方法查询的简单说明。

用SEEK方法查询:
这种方法只使用于以OPENTABLE 方式打开的数据表,而且在查询之前必须要对查询字段建立索引文件,由于已建立了索引文件,所以查询速度快,这种方式结果是将指针移到符合条件的第一个记录。例如:

SET TB=DB.OPENTABLE(“INPUT”)

TB.INDEX=”NAMEINDEX”

TB.SEEK ”=”, “石脑油”

用FILTER 属性查询:
FILTER属性查询是用来过滤数据的,只要我们给定过滤条件就可以将所需的记录筛选出来。需要说明的是,我们需要将以Filter属性筛选出来的数据集打开才能对其进行操作。例如:

Set Dy1=db.CreateDynaset (“input”)

Dy1.Filter=”物资名称 like ‘石*’”

Set Dy2.Dy1.CreateDynaset ()

用Find 方法查询。
Find查询有Findfirst findnext 两个方法,每次查询到一个记录。例如:

Set Dy=db.CreateDynaset (“input”)

S=”到货数量>100 and 物资名称like ‘石脑油’”

Dy.Findfirst S

Dy.Findnext S

2、用SQL查询。

2.1、Select-SQL查询语句的格式:

SQL(STRUCTURE QUERY LANGUAGE)即结构化查询语言,是查询关系型数据库的常用语言。由于SQL语言使用方便、功能丰富、简单易学得到很快的应用和推广,是各种关系型数据库的公用语言。使用SQL查询可以从一个表或多个表或视图中对数据库进行查询(有关SQL的更多信息,请参阅相关书籍,本文不多介绍)。它的核心语句是Select- SQL语句。

Select-SQL查询语句的格式:



SELECT [DICTINCT/ALL]----查询目标列

FROM tableexpression ----------表名/视图名

[WHERE]---------------------------条件

[GROUP BY... ]--------------------将查询结果的记录分组

[HAVING... ]------------------------满足条件的分组

[ORDER BY... ]---------------------对查询结果进行排序

下面应用笔者完成的《供应处物资管理软件》为例,。说明使用SELECT-SQL查询语句实现查询模块具体方法。

2.2单项查询模块的实现:

2.2.1应用的数据库in_db.mdb中包含表:input 字段名:物资名称、供货单位、供货日期、到货数量、总金额…….等等 。

2.2.2定义窗体及控件:如下表

如图(1):单项查询模块窗体图

2.2.3编写程序代码:

上述设计完成后,可以对窗体及控件的事件编写代码:

‘变量定义

Dim my_db As Database Dim my_dr As Recordset Dim Field_val1 As String Dim Field_val3 As Date

Dim Field_val32 As Date

Dim Field_val4 As Integer

Dim Field_val42 As Integer

Dim Search_txt As Integer

Private Sub Form_Load() Search_txt = 1 Text1.Text = "" Text2.Text = ""Label2.Caption = ""End Sub

Private Sub Command1_Click() ‘确定按钮

Select Case Search_txt

Case 1 ‘若选择“物资名称”

Field_val1 = Text1.Text

Set my_db = OpenDatabase("d:\zu_vb\in_db.mdb")
 


Set my_dr = my_db.OpenRecordset("input")

ss1 = "select * from input where (物资名称=" & "'" & Field_val1 & "')"

Data1.RecordSource = ss1

Data1.Refresh

Case 2 ‘若选择“供货单位”

. . .

Case 3 ‘若选择“供货日期”

Field_val3 = Text1.Text

Field_val32 = Text2.Text

If Val(DateDiff("d", (Text1.Text), (Text2.Text))) >= 0 Then

Set my_db = OpenDatabase("d:\zu_vb\in_db.mdb")

Set my_dr = my_db.OpenRecordset("input")

ss1 = "select * from input where 供货日期 between " & "#" _

& Field_val3 & "#" _ & " and " & "#" & Field_val32 & "#" Data1.RecordSource = ss1 Data1.Refresh Else zz = MsgBox("您输入的起始日期比终止日期大,请重新输入!", vbCritical, "严重警告,输入无效!")

End If

Case 4 ‘若选择“到货数量”

Field_val4 = Text1.Text

Field_val42 = Text2.Text

Set my_db = OpenDatabase("d:\zu_vb\in_db.mdb")

Set my_dr = my_db.OpenRecordset("input")

ss1 = "select * from input where 到货数量 between " & Field_val4 _

& " and " & Field_val42

Data1.RecordSource = ss1

Data1.Refresh

Case 5

. . .

End Select

End Sub

Private Sub Command2_Click() ‘取消查询

Text1.Text = ""

Text2.Text = ""

End Sub

Private Sub Command3_Click() ‘ 结束查询

Unload Me

End Sub

Private Sub Option1_Click() ‘选定“物资名称”字段

Search_txt = 1

Text1.Text = ""

Label2.Caption = ""

Text2.Enabled = False ‘text2 设为无效

Text2.Visible = False ‘text2 设为不显示

Text1.SetFocus



End Sub

Private Sub Option2_Click() ‘选定“供货单位”字段

(略)

End Sub

Private Sub Option3_Click() ‘选定“供货日期”字段Search_txt = 3Text1.Text = ""Text1.Text = Date ‘起始日期Text2.Text = Date ‘终止日期

Label2.Caption = "至"

Text2.Enabled = True

Text2.Visible = True

Text1.SetFocus

End Sub

Private Sub Option4_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

End Sub

Private Sub Option5_Click() ‘选定“总金额”字段

(略)

End Sub

Private Sub Text1_LostFocus()

‘判断如果选定的是“供货日期”字段,text1的输入值必须是日期型的 If Search_txt = 3 Then

If Not IsDate(Text1.Text) Then

z = MsgBox(" 非法日期!请重新输入 !", vbCritical, "严重警告,输入无效 !")

Text1.SetFocus

End If

End If

End Sub

Private Sub Text2_LostFocus()

‘判断如果选定的是“供货日期”字段,text2的输入值必须是日期型的

If Search_txt = 3 Then

Text2.Text = Format(Text2.Text, "yyyy-mm-dd")

If Not IsDate(Text2.Text) Then

z = MsgBox(" 非法日期!请重新输入 !", vbCritical, "严重警告,输入无效 !")

Text2.SetFocus

End If

End If

End Sub
 


2.3多项复合查查询模块的实现:

2.3.1应用的数据库in_db.mdb中包含表:input 字段名:物资名称、供货单位、供货日期、到货数量、总金额…….等等 。

2.3.2定义窗体及控件:如下表

如图(2)多项查询模块窗体图

2.3.3编写程序代码:

上述设计完成后,可以对窗体及控件的事件编写代码:

下面程序可实现“物资名称”为某值,供货日期在一定范围的采购明细的查询。

‘定义变量

Dim my_db As Database Dim my_dr As Recordset Dim com_txt As String Dim txt1 As Date Dim txt2 As Date Private Sub Command1_Click()

‘判断如果输入值不是日期型的,是无效值 If Not IsDate(Text1.Text) Then z = MsgBox("非法起始日期,请重新输入!", vbCritical, "严重警告,输入无效!")

Text1.SetFocus

Else

If Not IsDate(Text2.Text) Then

z = MsgBox("非法终止日期,请重新输入!", vbCritical, "严重警告,输入无效!")

Text2.SetFocus

Else

If Val(DateDiff("d", (Text1.Text), (Text2.Text))) >= 0 Then

'''*****设置条件*********

com_txt = Form5.Combo1.Text

txt1 = Form5.Text1.Text

txt2 = Form5.Text2.Text

Set my_db = OpenDatabase("d:\zu_vb\in_db.mdb")

Set my_dr = my_db.OpenRecordset("input")

ww1 = "select * from input where (物资名称=" & "'" & com_txt & "'" _

… & " and (供货日期 between " & "#" & txt1 & "#" _

& " and " & "#" & txt2 & "#))"

Data1.RecordSource = ww1

Data1.Refresh

Else



zz = MsgBox("您输入的起始日期比终止日期大,请重新输入!", vbCritical, "严重警告,输入无效!")

End If

End If

End If

End Sub

Private Sub Form_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 ‘设置text1 text2 为日期形式,执行时并显示当前日期。

Text2.Text = Date

End Sub

3、结束语:

本文对VB数据库查询功能做了简单的说明,特别对Select-SQL语句进行了详细的介绍,为了节省篇幅,以上只给出了窗体控件的属性和代码的核心部分,并去掉了许多修饰性的内容,感兴趣的读者在此基础上稍加扩充或修改,便可得到更完善的通用查询模块。(以上程序均在WINDOWS98环境下VB5.0中运行通过。)

【VB5.0中数据库查询模块的实现】相关文章:

数据库管理系统中的模糊查询技术03-03

应用LabSQL实现LabVIEW中数据库的访问03-07

基于FPGA的HDLC通信模块的实现05-14

浅析数据库管理系统中模糊查询技术的正确使用03-04

高校信息查询系统的设计与实现03-28

用CPLD实现单片机读写模块03-20

ERP中的物流模块研究12-04

实现基于网页的数据库数据导入03-18

基于DSP的扩频电台基带模块的设计与实现03-18