2024年3月19日发(作者:)
电子科技 2005
年第
年第
1
1
期(总第
期(总第
184
184
期)
期)
电子科技 2005
TL16C750在异步串行通信中的应用
VB6.0中数据库查询模块的实现
张巧玲
(内蒙古大学 职业技术学院,内蒙古 呼和浩特市010020)
摘 要 本文以SELECT-SQL语句为主,介绍在VB6.0环境下数据库查询的多种实现方法。
关键字 VB6.0 数据库 查询 SQL
中图分类号 TP311.13
VB(Visual Basic)是微软公司推出的基于
Windows的可视化编程环境,以其简单易学、编
程简洁、程序集成化高、功能强大而倍受程序员及
广大电脑爱好者的青睐。它在数据库应用方面也有
相当强大的功能。
查询模块是数据库管理系统中不可缺少的部
分。在VB中进行数据库记录查询操作,根据打开
数据库的方式来确定。主要有4种查询方法:SEEK
方法查询、FILTER 属性查询、Find 方法查询、
SQL查询。本文对前3种方法只作简单说明,着重
介绍第4种SQL查询方法。
Set Dy1=db.CreateDynaset (“input”)
Dy1.Filter=”产品名称 like ‘冰*’”
Set Dy2.Dy1.CreateDynaset ()
(3)用Find 方法查询
Find查询有Findfirst findnext 两个方法,
每次查询到一个记录。例如:
Set Dy=db.CreateDynaset (“input”)
S=”到货数量>100 and 产品名称like ‘冰
美人’”
Dy.Findfirst S
Dy.Findnext S
1 关于SEEK方法查询、FILTER 属性查询、
Find 方法查询的简单说明
(1)用SEEK方法查询
这种方法只使用于以OPENTABLE 方式打开
的数据表,而且在查询之前必须要对查询字段建立
索引文件,由于已建立了索引文件,所以查询速度
快,这种方式结果是将指针移到符合条件的第一个
记录。例如:
SET TB=DB.OPENTABLE(“INPUT”)
TB.INDEX=”NAMEINDEX”
TB.SEEK”=”,“冰美人”
(2)用FILTER 属性查询
FILTER属性查询是用来过滤数据的,只要我
们给定过滤条件就可以将所需的记录筛选出来。需
要说明的是,需要将以Filter属性筛选出来的数据
集打开才能对其进行操作。例如:
收稿日期:2004-09-21
2 用SQL查询
(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... ]--------------对查询结果进行
排序
60
VB6.0中数据库查询模块的实现
下面以笔者完成的《产品供应资源管理软件》为例,
说明使用SELECT-SQL查询语句实现查询模块具
体方法。
(2)单项查询模块的实现:
主要控件及名称
字段选择
Textbox(text1)
Textbox(text2)
属性
Frame(frame1)
① 应用的数据库in_db.mdb中包含表:
input 字段名:产品名称、供货单位、供货日期、
到货数量、总金额…….等等 。
② 定义窗体及控件如表1所示。
表1 单项查询定义窗体及控件
设置
caption
caption
caption
caption
caption
caption
为空
为空
确定
取消
结束
Caption
Data1
说明
字段选择
产品名称
供货单位
供货日期
到货数量
总金额
查询值
确定本次查询
取消本次查询
结束查询
数据浏览
d:\zu_vb\in_db.mdb
查询结果显示
Optionbutton(Option1)
Optionbutton(Option2)
Optionbutton(Option3)
Optionbutton(Option4)
Optionbutton(Option5)
Text
Text
Commandbutton(command1) caption
Commandbutton(command2) caption
Commandbutton(command3) caption
databasename
Dbgrid(dbgrid1)
Data(data1)
datasource
③ 编写程序代码上述设计完成后,可以对窗
体及控件的事件编写代码。
变量定义
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 J‘若选择“供货日期”
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,
"严重警告,输入无效!")
61
电子科技/2005年1月15日
VB6.0中数据库查询模块的实现
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 ‘终止日期’
62
IT Age/ Jan. 15, 2005
Label2.Caption = "至"
Text2.Enabled = True
Text2.Visible = TrueText1.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) Thenz =
MsgBox(" 非法日期!请重新输入 !",
VB6.0中数据库查询模块的实现
vbCritical, "严重警告,输入无效 !")
Text2.SetFocus
End If
End If
End Sub
主要控件及名称
ComboBox
TextBox(text1)
TextBox(text2)
CommandButton(command1)
CommandButton(command2)
DbBrid(dbgrid1)
属性
Frame(frame1)
caption
Text
Text
caption
caption
Data(data1)
datasource
(3)多项复合查查询模块的实现:
① 应用的数据库in_db.mdb中包含表:
input 字段名:产品名称、供货单位、供货日期、
到货数量、总金额…….等等 。
② 定义窗体及控件如表2所示。
表2 多项复合查询定义窗体及控件
设置
caption
为空
为空
为空
确定
结束
Caption
databasename
Data1
说明
查询条件选择
产品名称选择
起始日期
终止日期
确定本次查询
结束查询
数据浏览
d:\zu_vb\in_db.mdb
查询结果显示
③ 编写程序代码
上述设计完成后,可以对窗体及控件的事件编
写代码:
下面程序可实现“产品名称”为某值,供货日
期在一定范围的采购明细的查询。
定义变量
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()
‘将项目“冰美人”、雅芳、羽西………添加
63
电子科技/2005年1月15日
VB6.0中数据库查询模块的实现
到combo1控件中
Combo1.AddItem "冰美人"
Combo1.AddItem "羽西”
Combo1.AddItem "雅芳"
Combo1.AddItem "旁氏"
Combo1.AddItem "美宝莲"
Combo1.AddItem "欧伯莱"
Combo1.AddItem "琪雅"
Combo1.AddItem "宇航人"
Combo1.AddItem "仙妮雷德"
Combo1.AddItem "欧莱雅"
Combo1.AddItem "玉兰油”
Combo1.Text = "冰美人”设置 combo1的
初始值
Text1.Text = Date ‘设置text1 text2 为日
期形式,执行时并显示当前日期。
Text2.Text = Date
End Sub
3 结束语
对VB6.0数据库查询功能做了简单的说明,
特别对Select-SQL语句进行了详细的介绍,给出
了窗体控件的属性和代码的核心部分,并去掉了许
多修饰性的内容,也可以在此基础上稍加扩充或修
改,便可得到更完善的通用查询模块。
作者简介
张巧玲(1961—),女,内蒙古大学职业技术学院。
研究方向:交通运输理管。
Realizations of Medium database Search Mold Piece of VB 6.0
Zhang Qiaoling
(University of Inner Mongolia Occupation Technical College, Inner Mongolia 010020, China)
Abstract This paper introduces the various realizations of database search under the VB6.0 environment with SELECT- SQL as
the language sentence.
Keyword VB6.0; database; search SQL
关于 CSR
英国 CSR plc 公司 (Cambridge Silicon Radio) 是供应短距离无线通讯单芯片无线电装置的领先厂商。CSR提供以
BlueCore(蓝牙芯片组)为基础的先进硬件/软件解决方案、完全整合的 2.4 GHz 无线电、基频及微控制器。在所有通过
认证并列在蓝牙网站上使用蓝牙 v1.1 和 v1.2 的产品和模件中,60% 使用 BlueCore。诺基亚、戴尔、松下,夏普、摩托
罗拉、IBM、苹果、NEC、东芝、RIM 及索尼等行业领先公司,已在6000多万蓝牙产品中使用 BlueCore 装置。
CSR 正在生产其第四代 BlueCore 装置,支持最近推出的改进型数据速率标准。2004年11月9日,CSR 公布了专门针对
移动电话和消费电子品市场的第一个内嵌 IEEE802.11a、b、g 单芯片的解决方案。
(有关蓝牙的详细资料请查看 SIG 的网站 www.bluetooth.com )
64
IT Age/ Jan. 15, 2005


发布评论