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