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

时间:2024-04-26 03:02:33 5A范文网 浏览: 论文范文 我要投稿

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

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

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

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

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

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

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定义窗体及控件:如下表

主要控件及名称 属性 设置 说明
  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 数据浏览
databasename     d:/zu_vb/in_db.mdb
Dbgrid(dbgrid1) datasource Data1 查询结果显示

如图(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 = ""


  [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />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定义窗体及控件:如下表

主要控件及名称 属性 设置 说明
  Frame(frame1) caption 查询条件选择
ComboBox caption 为空 物资名称选择
TextBox(text1) Text 为空 起始日期
TextBox(text2) Text 为空 终止日期
CommandButton(command1) caption 确定 确定本次查询
CommandButton(command2) caption 结束 结束查询
  Data(data1) Caption 数据浏览
    databasename d:/zu_vb/in_db.mdb
DbBrid(dbgrid1) datasource Data1 查询结果显示

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


  [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr /> 

相关文章:

DOS下DSP播音的编程04-26

转角特性测试仪的数据采集与处理04-26

Ad hoc网络按需路由协议缓存策略研究04-26

基于混沌序列和浮点小波变换的盲水印04-26

计算机专业英语教学研究与实践04-26

探析教育信息化中的微格教学04-26

浅谈C语言中循环结构的教学方法04-26

创设情境任务驱动 互助协作04-26

南开大学伯苓学院本科生二作发表Nature论文04-26

研究生为何频频在国际学术刊物发表论文——厦门大学多04-26

热搜文章
最新文章