admin 管理员组

文章数量: 1184232


2024年3月19日发(作者:如何进行数据恢复)

维普资讯

_l0 ■ 1露 

D l A聃ASE 

拄i B+ 

摘要本文以学生档案数据库Studata为例,介绍利用ADO在VB+SQL Server 2000 

系统中实现单项与多项条件查询的程序设计方法。 

关键词数据库,ADO,查询,事件代码 

刖吾 

学生信息表 

对数据库信息进行查询检索是数据库管理软件的主要功 

字段名 数据类型 宽度 

能,也是其难点之一。ADO(ActiveX Data Objects)是一种提 

学号 char 8 

供访问各种数据类型的连接机制。是当前非常流行的访问各种 

姓名 vaT℃ha 50 

数据库的方法。使用ADO之前必须先引用。方法为:从VB 

性别 char 2 

的“工程”菜单中,选择“引用”项,从库的列表中选择 

班级 varehar 50 

“Microsoft ActiveX Data Objects 2.8 Library”,单击“确 

入学总分 lfoat 8 

定”。便可使用ADO对象库提供的所有对象进行编程了。 

本文以学生档案数据库为例,介绍在Visual Basic 6.0中 

家庭电话 varchar l5 

文版中,通过ADO对象模型访问SQL Se ̄er 2000数据库,对 

家庭住址 varehar 40 

数据库中的Students表进行各种查询及显示查询到的记录的实 

出生年月 datefime 8 

现方法。本程序包含一个数据库Studata,其中包含表Stu— 

备注 varchar 500 

dents。一个存放所有学生照片的文件夹Photo,一个标准模块 

Module1.bas,一个查询主窗体FrmSearch.frm,一个单项条件 

PUblic que ̄Str String 查询冬t件每符罱 

设置窗体FrmSCondition.frm,一个多项条件设置窗体FrmM— 

PubiJc cent As ADODB Connection 定义连接对敦变量 

Con ̄tion.frm。 

PUbliC 毫As ADODB Recor ̄et 是义记京煞碱象袭置 

Public f ndstate As Boolean 是否是查询状态 默认值为否 

二、数据库中的表及其字段 

四、查询主窗体 

假设学生档案数据库Studata已经生成(位于当前路径 

查询主窗体FrmSearch.frm,用来显示Students表中所有记 

下),库中有学生信息表Students,表中有若干条记录。为简 

录或查询到的记录,同时显示相关记录的照片,如图1所示。 

化说明,假设表中仅有如下字段,如右表所示。 

1.该窗体上包含如下主要控件 

另外为了存放所有学生的照片,在当前路径下建一文件夹 

(1)一个图像框Imagel,用来显示照片。 

Photo,在其中存放所有学生的个人照片,每副照片以.jpg文 

(2)八个文本框,分别是txtld、txtName、txtSex、 

件格式存放,为了读取方便,每个学生的照片文件名为其学 

txtClass、txtScore、txtBirthday、txtAddress、txtTe1分别用来显示 

号,即每个学生的照片文件全名格式为:学号.jpg。 

学号、姓名、性别、班级、入学总分、出生年月、家庭住址和 

三、标准模块的变量 

家庭电话等字段的值。 

(3)一个富文本框控件(RichTextBox),名称为Rtext1, 

在标准模块(Module1.bas)中,定义全局变量如下: 

用来显示个人简历,即备注字段的内容。 

与 

il ∥一一 t llll0 _ l 00 l

l ll 

l l 

00一 一0 lll0 

_ ll10 J'| ll- 

_ l ll l

| 

? l i 尊 ; || 

维普资讯

譬 瑟慧 l慧 _ 

壤 熊一t驾鹗隔麓 

氇 《r氇镱交 豁 遘l l精 0 

ll_ ll l 蠹 。 I数 

l_A聃ASj 

(4)一个数据网格控件(MSFlexGrid),名称为Gridl,显 

示所有记录或查询到的所有记录。 

(5)八个命令按钮(CommandButton),名称分别为cmd— 

Top cmdBottom cmdPre cmdNext cmdSfind cmdMfind 

cmdCfind、cmdExit,分别用来显示第一条记录、最后一条记 

录、前一条、后一条,以及显示单项条件设置窗体、多项条件 

设置窗体、清除查询的条件和退出程序。 

2.窗体的通用——声明段中的代码 

Option Explicit 

Dim rs2 As ADODB.Recordset 查询后的记录集 

Dim sql As String 存放SELECT命令的字符串 

3.窗体的Load事件过程代码 

Private Sub Form上oad《) 

On Error GoTo sql

_

error 

Set cont=New ADODB.Connection 

Set rs=New ADODB Recordset 

cont.Open 

Provider=SQLOLEDB,1l:Integrated Security=sSPI;Persist 

Securiyt lnfo=False;UserlD=sa Initial Catalog studata; 

Data Source=Izyds 连接SOL Server数据库,服务器名为 

Izyds,用户名为sa 

sql= select¥frOm students 

rs.Open sq1 cont adOpenKeyseti adLockOptimistic 

Grid1 

Cols rs.Fields.Count 

TextMatrix(O 0、 攀号 

TextMatrix( 1】= 姓名 

TextMatrix 0i 2、= 性 I 

TeXtMatrix 3、= 班级 一 

TextMatrix 4、: 入学 食 r 

TextMatrix(o 51: 生年只 

TextMatrix(0 : 家艇住址 

- 

砌x(01 京 隔 - -

1'extMatri ̄( 81: 备{ 

ColWidth 、000 f; | 

CoPZVidth 、毫1000 

ColWidth 2\:500 

ColWidth(3)= Q∞ | 

CoIWidth(4、每10o0 | 

ColWidth 黾、=、000 。 

ColWidth 、毒撇  。

ColWidth 、= 10o0 - 

Co ̄idth ::2000 .I 

End 。 

Id.Lock ̄;True 设置文苯框 只读 

txtNamei L ̄ked暑 ue | i|l 。 

 ̄tSex L ̄ked=True|-| 

txtClass:Locked童True 。 i 。 |‘ 

MsgB(ox 查询错误: & Err.Descri ption 

TextMatrix( Rows-、I 4、=rs 41 

Grid Ref

res

h ||。 | || . | |I  || 

nd Sub 

s .Q 吼 牾幅锋_冬 I | 。| . 

Priva te Sub LoadDatalnControIs rs As ADODB Recordset) 

If rs.BOF=True Or rs.\EOF=True Then 

End If 。| 

txtId.Text rs.Fields("学号 Value— 

txtName.Text篇 Fields 姓名").Value 

txtSex.Text =俜 Fields(| ’、. | 

txtClass.Text;rs.Fi e\{ 斑级 、.。Valuet 一 

txtScore,Text…=rs.Fields(".,k,. 余 ).Value| | 

txtBirthday.T t未}S 氧 ?她茔年 ’、.Value 

txtAddre

ss,Text专 家寝洼 !. a . |: 

txtTe1.Text警 Fields( 家庭电话 Value ÷ | | 

rtext1.Text=rs.Fields 备注-1。 a\、l色 |I | | 

Image1.Picture j:LoadPicture(App.P蠢t1.|_+"\photo\"+ 

维普资讯

1) l B人S 

If rs2 EOF=TrueThen 

rs2.MoveLast 

MsgBox 已到查询到的尾记录 ,64 

End If 

Call LoadData InControls(rs2) 

End If 

End Sub 

9.“前一条”命令按钮的单击事件过程代码 

Private Sub cmdPre_Click() 

If ifndstate=FaIse Then 不是查询状态 

s MovePrevious 

If r Sl BOF=True Then 

MsgBox 已到首记录 ,64 

图1 

俺.MoveFirst 

End 

txtld.Text+ .jpg } 照片文件名格式为:学号.jPg 

Call Load DataInControls(rS) 

End Sub 

EIse 是查询状态 

6.“首记录”命令按钮的单击事件过程代码 

rs2.MovePrevious 不是查询状态 

Private Sub cm ̄op_CIick( 

lf rs2.BOF=TrueThen 

If findstate=False Then 不是查询状态 则显示表中所有记 

MsgBox 已到查询到的酋记录 6辱 

录的第一条记录 

rs2.MoveFirst | 

rs.MoveFirst 

If 

Call LOadDataInCOntrOIs(rs) 

CaI ILoadDataInControls(rs2) 

Else 是查询状态,则显示查询到的记录集中的第一条记录 

End¨f 

rs2.MoveFirst 

End Sub 

Call LoadDatal nControls(rs2) 

1O.“单项查询”命令按钮的单击事件过程代码 

End If 

Private Sub cmdSFind_Click() 

End Sub 

On Error GoTo errdo 

7.“尾记录”命令按钮的单击事件过程代码 

msq\As String 

Private Sub cmdBottom

Cl ̄ck(、 

Set rS2=New ADODB.Recordset 

_

If findstate=True Then 是查询状态 

findstate=TrMe 

rs2.MoveLast 

frmScondition.Show vbModaI 

CaIl LoadDataInContfols(rs2) 

IfqueryStr= Then ExitSub 查询窗体中单击了取消键 

EIse 不是查询状态 

sql= 8elect from students where &queryStr 

鸭.MoveLast 

rs2.Open sq1.cont adOpenKeyset,adLockOptimistic 

ColI LoadDatalnControls(rs) 

If rs2.EOF=True And rs2 BOF=True Then 

End 

MsgBox 没有符合条件的记录 

End Sub 

Exit Sub 

8.“后一条”命令按钮的单击事件过程代码 

End If 

Private Sub cmdNext_C¨c k() 

LoadDataInControls『S2 在文本框中显示查询到的第—条记录 

If findstate=FaIse Then 不是查询状态 

loadrsdata rs2 在表格申显示查询到的所有记录l l

Exit Sub 

【s.MoveNext 。 。

If rs:EOF=True Then 

errdo1 

rs.MoveLast 

MsgBox Error(Err)。vbCmIcaI, 单项信息查询 

End Sub 

MsgBox 已到尾记录 ,64 

End If 

11.“多项查询”命令按钮的单击事件过程代码: 

Col、LoadDataInControls rs) 

Private Sub cmdMfind_Click 

EIse 

On Error GoTo errdo 

rs2.MoveNext| E|。 

frmMcondition.Show vbModal 。 

Dim so lAsString|| 一 

与 

维普资讯

{% 0 ■ 

蓑麓错一翻誓 密壤 

撬.霹 

l A酶AS 

Set rs2=New ADODB.Recordset 

findstate=True 

If queryStr=~Then Exit Sub 查询窗体中单击了取消键 

sql= select女from students where &queryStr 

rs2.Open sqI,cont,adOpenKeyset,adLockOptimistic 

If rs2.EOF=TrueAnd rs2..BOF=Truemen 

MsgBox 没有符合条件的记录 

ExitSub 

EndIf 

LoadDatalnControls rs2 在文本框中显示查询到的第-条记录. 

Ioadrsdata rs2 在表格中显示查询到的所有记录 

Exit Sub 

errdO: 

图2 

MsgBox Error(Err).vbCritical, 多项信息查询 

End Sub 

(3)两个命令按钮(CommandButton),名称分别为Cm- 

dOk和CmdCancel。 

12.“清除条件”命令按钮的单击事件过程代码 

Private Sub cmdCfind Click() 

重新在表格和文本框中显示所有记录 

query,Str= 

findstate=False 

 -

2.窗体的Load事件过程代码 

在组合框CmbSearItem和CmbRelation中发别添加查询项目 

字段名称和关系运算符。 

Private Sub Form_Load() 

DIm iAs Integer 

queryStr= 

For =0 To rs.Fields.Count一2 

LoadDatalnControls rs 

Ioadrsdata rs 

Set rs2=Nothing 

End Sub 

13.“退出”命令按钮的单击事件过程代码 

Private Sub cmdExit

Click() 

_

添加除备注宇段以外的所有字段名称 

cmbSearltem.Addlteml rs.FieldS(.)l Name 

Next 

End 

Set rs=Nothing 

Set rs2=Nothing 

Set cont=Nothing 

End Sub 

。  -

cmbSearItem.ListIndex=0 

cmbRelation.Add Item =。 

cmbRelation.AddItem >l_ 

CmbRelation.AddItem > 

cmbRelation.Addltem 《 

cmbReIation.Addltem <= 

五、单项查询条件 

在查询主窗体中单击“单项查询”命令按钮后,显示单项 

条件设置窗体(FrmScondition.frm),如图2所示。在该窗体 

cmbRelation.AddItem 《>^ 

cmbRelation.Addltem"like 

cmbRelation Listlndex=O 

txtfindvalue.Text=~ 

cmbFindvalue.Visible 

End Sub 

False 

中选择要查询的字段、运算符和查询的值,单击“确定”后, 

该窗体消失,在查询主窗体中显示查询到的记录。单击“取 

消”时,该窗体消失,不进行查询。 

1.该窗体上包含如下主要控件 

(1)三个组合框(ComboBox),名称分别为Cmb. 

Searltem、CmbRelation、CmbFindvalue(隐藏)。分别用来显示 

要查询的字段和关系运算符“=、<、>、<>、<=、>=、 

3.单击组合框cmbSearItem时的单击事件过程代码 

当查询项目为“性别”或“班级”时,能在组合框 

CmbFindvalue中显示“男”和“女”或表中所有班级字段值, 

供用户选择。 

Private Sub cmbSearltern_Click() 

D{m rsclasshame As ADODB.Recordset 

Like(包含)”。当选择查询项目“性别”和“班级”时,组 

合框CmbFindvalue显示。 

(2)一个文本框(TextBox),名称为TxtFindvalue。用来 

输入查询的值。当选择查询项目“性别”和“班级”时,该文 

本框隐藏,选择其它查询项目时,该文本框显示。 

用来在查询信息后的组合框中添加班级宇段值 

Dim sqlAs stri嗵 

On Error GoTo errdo 

set sclassname;New ADODB ReCordset 

维普资讯

}1)A1.A AS 

sql="select distinct班级from students 

queryStr=Trim(cmbSearltem.Text)&Trim 

rsclassname.0pen sql,cont,adOpenKeyset,adLockOo

ti— 

(cmbRelation.Text J& &findStr& 

mistic 

Case 学号 , 姓名 , 性别 , 班级 , 家庭住址 , 家 

Select Case cmbSearltem..Text 

庭电话 

Case 性别 

queryStr=Trim(cmbSearltem.Text)&Trim 

cmbFindvalue.Visible=True 

(cmbRelation.Text)& 一&findStr& 一 

txtfinavalue.Visible=False 

Case 入学总分 

cmbFindvalue.Clear 

queryStr=Trim(cmbSearItem.Text)&Trim 

cmbFindvalue.Addltem 男 

(cmbRelation.Text)& dstr 

cmbFindvalue,Addltem 女 

. 

End Select 

cmbFindvalue.Listlndex=0 

End If 

Case 班级 

Me.Hide 

cmbFindvalue.Visible:True 

Exit Sub ’ 

txtfindvalue.Visible=False e| dQ 

cmbFindvalue.CIear 

MsgBox Error(Err),vbCritical, 单项条件查询 

Do While Not rsclassname—EOF。 

Resume Next 

cmbFindvalue.Addltem rsclassname.FieIds(O).Value 

End Sub 

rsclassname.MoveNext 

5.“取消”命令按钮的单击事件过程代码 

LOOD

— 

Private Sub cmdCancel_Click() 

Set rsclassname=Nothing 

queryStr=~ 

cmbFIndvalue.Listlndex=0 

Me.Hide 

Case EIse 

End Sub 

cmDFindvaIue.Visible=False 

、 

txtfindvalue.Visible=True 

End Select 

六、多项查询条件 

Exit Sub ’ 

errdo: 

在查询主窗体中单击“多项查询”命令按钮后,显示多项 

MsgBox Error(Err),vbCritical, 单项条件查询 

条件设置窗体(FrmMcondition.frm),如图3所示。在该窗体 

Resume Next 

中选择要查询的字段、运算符和查询的值,单击“添加查询条 

End Sub 

件”按钮后,添加条件到下面的表格中,在表格中选中一个条 

4.“确定”命令按钮的单击事件过程代码 

件后,单击“删除查询条件”,则从表格中将该条件删除,单 

Private Sub cmdOk_Click() 

On ErrorGoToerrdo 

击“确定”按钮后,该窗体消失,在查询主窗体中显示查询到 

Dim findStr As String 在文本框或组合框中输入或选择的信息 

的记录。单击“取消”时,该窗体消失,不进行查询。 

ClUeryStr= 

1.该窗体包含如下主要控件 

lf cmbFindvalue.Visible=True Then 

(1)二个单选按钮(OptionButton),名称分别为OptAnd 

ifndStr=embFindvalue.Text 

和OptOr ,用来选择条件之间的关系运算符。一开始不可用, 

Else 

表格中添加一个条件后,变为可用。 

If Trim(txtfindvalue.Text =~Thell 

MjsgBox"请输入查询信息 vbCriticaI, 单项条件查询 

(2)三个组合框(ComboBox),名称分别为Crab— 

Exit Sub 

SearItem、CmbRelation、CmbFindvalue(隐藏)。分别用来显示 

End}f 

要查询的字段和关系运算符“=、<、>、<>、<=、>:、 

findStr=txtfindvalue.Text 

Like(包含)”。当选择查询项目“性别”和“班级”时,组 

End If 

合框CmbFindvalue显示。 

IfTrim(Left(cmbRelation.Text 4))= like"’Then 

ClUeryStr=cmbSearltern.Text like & % find— 

(3)一个文本框(TextBox),名称为TxtFindvalue。用来 

Str& %一 LIKE两边有空格 通配符为% 

输入查询的值。当选择查询项目“性别”和“班级”时,该文 

EIse 

本框显示,组合框CmbFindvalue隐藏。 

SeIect Case Trim(cmbSearItem.Text) 

(4)一个数据网格控件(MSFlexGrid),名称为Grid1。 

Case 出生年月 日期型字段两边加愕 

用来显示查询的条件。 

与 

糍%毽穗l。毫一u 警 强甏%强蠢 薄 毪强 甏I臻l誊ll蠹鬟骥§甏零舞赣嚣强甏毳|薯l《 缮 强垂%氍善|I魏 赣 疆程 誊赣辫罄l甍 氇|u强爨蠹鼍 

l强 强 蕊 g爨强强警%津|l琵 强 罐毫薯 强 臻强拜|≯ ||§ 

维普资讯

%∞瓤麓j} 《筏| 

l 00◇_ll l0lll_0 j 0 l I

 ll 叠 | | ÷|繇 爨一鬻鞭强 

| 

 jl | 撬一簿 

llA AS 

(5)四个命令按钮(CommandButton),名称分别为Cm— 

dAddcondition、CmdDelcondition、CmdOk和CmdCancel。刚显示 

With Grid1 设置表格的列数、列宽及固定行显示的列表头 

FixedRows=1 固定的行数为1 

该窗体时,命令按钮CmdDelcondition和CmdOk不可用。 

图3 

2.窗体的通用——声明段中的代码 

Option Explicit 

D1m conditionNo As Integer 表格中的条件数 

3.窗体的Load事件过程代码 

在组合框CmbSearhem和CmbRelation中分别添加查询项目 

字段名称和关系运算符,在表格控件Gfidl中设置列数、列表 

头名称及规定每列的宽度。 

Private Sub Form

_

Load(J 

On Error GoTo errdo 

DimiAs Integer 

queryStr= 

For i=0 To rs.Fields,Count一2 

cmbSearltem:Addltem rs.Fields㈣,Name 

Next 

cmbSearltem:Listlndex=0 

cmbRelation Addltem : 

cmbRelation.Addltem >= 

cmbRelation,Addltem 

cmbRelation.Addltem ‘ 

cmbRelation.Addltem (= 

CmbRelation Addltem 《> 

cmbRelation.Addltem"like 

cmbRelatiO n.Listlndex=O 

txtfindvalue Text 

cmbFin ̄alUe Vis e=False 

OptAnd.Enabled=FaIse 

添加第一个条件时 逻辑运算符不可用 

optOr.Enabled=FaIse 

Cols;5 

ColWidth(O):1000 

ColWidth(1)=1000 

ColWidth(2)=1800 

ColWidth《3)=1 000 

ColWidth《4)=2300 

TextMatrix(O.O)= 序号 

TextMatrix(O,1); 逻辑关系 

TextMatrix(O,2) 查询项目 

TextMatrix(0 3): 条件关系 

TextMatrix(O,4)= 查询信息 

EndWith 

cmddelcondition.Enabled False 没有添加条件时,删除条 

件无效 

cmdOk.Enabled, False 确定按钮无效 

ExitSub 

errdo: 

MsgBox Error(Err),vbCritica J, 多项条件查询 

EndSub 

4.单击组合框cmbSearhem时的单击事件过程代码 

当查询项目为“性别”或“班级”时,能在组合框 

CmbFindvalue中显示“男”和“女”或表中所有班级字段值, 

供用户选择。 

Private Sub cmbSearltem_Click() 

Dim rsclassname As ADODB.ReCOrdset 用来在查询的组合 

框中添加字段值 

Dim sql String 

On Error GoTo errdo 

Set rsclassname New ADODB.Recordset 

sql="select distarct班级from Students" 

rsclassname. Open sql,cont,adOpenKeyset,adLockOptI_ 

mistiC 

Select Came cmbSearltem Tex0 

Case 性别 

cmbFindvalue.Visible=True 

txtf  n dvaiue l\b\售 False 、 

cmbFindvaJue Clear 

embFindvalue.Addltem 男 

cmbFindvalue.Addltem 女 

CmbFindvalue Listlndex 0 

Case 班级 

CmbFindvalue.Visible=True 

txtfindvalue.Ⅵsible=False 

cmbFin

dvalue.CIear 清除前面显示在组合框中的内容 

Oo While Not rsclassname.EOF 

cmbFindvalue.Addltem rsclassname.Fields(O).VaIue 

礴 lassname.MoveNext 

L{oOp 

承II 

维普资讯

l ) l 抟AS 

Set rsclassname=Nothing 

cmbFindvalue.Listlndex=0 

Case Else 

cmbFindvalue Visible=False 

txtfindvalue。Visible=True 

End Select 

Exit Sub 

errdo: 

MsgBox Error(Err),vbCritical, 多项条件查询 

Resume Next 、 

End Sub 

5.“添加查询条件”命令按钮的单击事件过程代码 

Private Sub cmdAddcondition_Click() 

On Error GoTo errdo 

If txtfindvalue。Visible=True Then 

If txtfindvalue.Text= Then 

MsgBox 请输入查询信息 vbCritica1. 多项条件查询 

Exit Sub 

End If 

End If 

conditionNo:conditionNo+1 条件数加1 

Grid1。Rows:conditionNo+1,行数为条件数加 

optAnd,Enabled=True 逻辑运算符有效 

optOr.Enabled=True 

添加查询条件到表格中 

Grid1,TextMatrix(conditionNo,0)=Format(conditionNo, 

O0 ) 

If conditionNo>1 Then 

If optAnd.Value=False And optOr.Value=False Then 

MsgBox 请选择逻辑运算符 

Exit Sub 

End If 

Grid1.TextMatrix(conditionNo,1)= llf(optAnd Value= 

True, AND , OR ) 

Else 

G 1,TextMatrix(conditionNo,1)=~ 

第一行不显示逻辑关系 

End If 

G rid1.TextMatrix(conditionNo,2)=cmbSearltem,Text 

Grid1,TextMatrix(conditionNo,3)=cmbRelation,Text 

If txtfindvalue.Visible=True Then 

Grid1.TextMatrix(conditionNo 4》=txtfindvalue.Text 

Else 

Grid1.TextMatrix(conditionNo,4)=cmbFindvalue Text 

End If 

cmddelcOnditiOn,Enabled=True 

cmdOk.Enabled=True 

Exit Sub 

errdO: 

MsgBox Error(Err),vbCritica1. 多项条件查询 

2006.10 

毫■■翟技巧与 

6.“删除查询条件”命令按钮的单击事件过程代码 

Private Sub cmddeIcondition_Click 

On Error GoTo errdo 

If Grid11.Rows<=1 Then Exit Sub 无条件时不删除 

DimI i As Integer,jAs Integer 将选择的行后面的所有行向前移 

For Grid RowSell+1 To Grid1。Rows一1 {为行号 

For J=0 To4 、 号 

Grid1.TextMatrix(_l一,.j)=Grid1.TIextMatrix j) 

Next。J I 

Grid、.TextMatrix i一、1 0、 Format(i一、. Q 、 

一 

愚。薅号逢镶 ll。 

N 

ext

r-d

I TextMat 

 i

. 

rix 

(1、 1 、:~.)=~ .第一行不显示逻第 警 辑运算符 I 

lf Grid1.Rows> Then Grid1.Rows=Grid1.Rows-1 

。 数憾 。 

conditionNo;0DnditionNo一, 

IfGrid1.Rows《=1 Then 

cmddeIcondition.Enabled;FaIse 

cmdOk Enabled;False 

EndIf 

ExitSub 

errdo: 

MsgBox Error(E rr) ̄vbCritical, 多项条件查询 

7.“确定”命令按钮的单击事件过程代码 

Private Sub cmdOk

_

Click(、 

On Error GoTo errdo 

Dlm str As String 每一行的条件表达式 _ 

m coI、As String 镰— 值 

趴m col2 As String 镰二 值 

Dim col3 As String 第三列的值 

Dim col4 As String 第四列的值 

conditionNo;0 Then MsgBox 请选择查询条件 

querySt = 

D_m i A nteger 

Q¨i=、To conditionNo 

str= 

co门=Trim(Gridl TextMatrix(『J1)) 得到逻辑关系运算符 

co12=Trim(Grid TextMatrix(i.2I) 查询项目 

col3;Tnm(Grid1 ̄TextMatrix(i,3I) 关系运算符 

col4=Trim(Grid1.TextMatF_xI i.4) 查询值 _ 

If col3= like Then 

str=col2& &col3& % &col4& % 

Elsel’co = 出 { 主}旯 _【 en 

str=col2&。col3& &col4& 日期型字段力皿井号 

Else col\2; 入学息 "Then t数谨字段 

str;col2&Col3& col4 

|l| 

(下转第67页) 

维普资讯

deepCloneObjects(objList.modelSpaceld.idMap) 

AcDbldMappinglter iter(idMap): 

for(iter.start():!iter.done():iter.next())( 

AcDbldPair idPair: 

#import t Program Files\Common Files\SYSTEM\ADO| 

msadol 5.dll rename("EOF . ADOEOF ) 

using namespace ADODB; 

iter.getMap(idPair): 

if(!idPair.isCloned()) 

continue; 

三、结语 

本文所描述的是通过AUTOCAD的二次开发,通过操作 

desid.setFromOIdld《idPair.value().asOIdld()) 

) 

) 

CAD二维图的部件轮廓,可以快速精确计算出该部件三维实体 

的体积和I重量,在产品设计中很有使用意义。 

6.ARX程序中使用ADO数据库技术 

参考文献 

1.avid J.Kruglinski,Scot Wingo,George Shepherd著. 

将部件的材料信息存储在数据库中,并在对话框中对数据 

库记录进行添加、修改、删除,在项目中是利用ADO数据库 

技术进行操作的(注意:在stdAfx.h文件中添加组件的引 

用)。 

VISUAl_ C++技术内幕6.0第五版.北京希望电子出版社, 

2000 

2.俊昌、李旭东编著.AutoCAD objectARX 2000开发 

技术指南.电子工业出版社,1999 

//C0M接口支持类 

#include<atlconv.h> 

nclude<coredef.h> 

3.李世国编著.AUTOCAD高级开发技术一ARX编程及 

应用.机械工业出版社,1999 

(收稿日期:2006年8月6 E1) 

//描述ADO接口 

(上接第50页) 

Else 字符字段加单引号 

str=col2&col3&…

End If 

成了单项条件查询。单项查询是多项查询的特例。该程序可以 

满足各种查询条件的需要。 

2.设置连接数据库的字符串时,可在窗体上添加ADO数 

&col4&… 

据控件,在其属性页中通过“生成”连接字符串向导来生成, 

将生成的字符串复制到程序代码中,然后再将ADO数据控件 

删除即可。这样可避免繁琐的输入或出错。 

3.无论是单项查询还是多项查询,生成查询条件字符串 

时,要根据查询的字段类型和运算符生成合法的表达式,这是 

最容易出错的地方。 

4.所有照片文件单独放在一个文件夹中,而不是按照通 

常的做法放在数据库中,这样可简化照片的显示。不过照片文 

queryStr=queryStr&col1& 

Nexti 

Me.Hide 

&str& 

Exit Sub 

errdO: 

MsgBox Error(Err),vbCritical, 多项条件查询 

Me.Hide 

End Sub 

8.“取消”命令按钮的单击事件过程代码 

Private Sub cmdCancel_Click() 

queryStr= 

Me.Hide 

End Sub 

件名最好要有规律,如:该文中以学号为-文件名。 

此程序在VB6+SQL Server2000环境下调试通过。 

参考文献 

1.李晓黎等.Visual Basic+SQL Se ̄er数据库应用系统 

开发与实例.人民邮电出版社, 2003.8 

七、总结 

1.‘本程序提供了利用ADO对象对SQL Server2000数据库 

2.龚沛曾等.Visual Basic程序设计简明教程(第二版) 

高等教育出版社,2003.3 

3.刘中甫.在VB+Access系统中实现多项条件查询.电 

脑编程技巧与维护,2003.9 

(收稿日期:2006年7月9日) 

进行连接并查询记录的方法,按照某一个字段查询时,可采用 

单项条件查询。对于多个字段进行查询时可采用多项条件查 

询,其中多项条件查询时,如果只对单个字段进行查询,则变 


本文标签: 查询 条件 显示 数据库 窗体