设计分析
方法一:使用查询参数构造sql Select语句,然后使用ADO Command 对象或
RecordSet 执行查询语句
方法三:先执行Select语句获取数据库数据,将其存放到RecordSet对象
中,然后执行Recordset对象的Find方法查找符合条件的记录 ,或
者设置Recordset对象的Filter属性筛选符合条件的记录
技术要领
MSFlexGrid控件的AddItem 方法用于向控件添加一行数据。
语法:object.AddItem (string,index)
其中,object为MSFlexGrid控件名称,string为包含数据的字符串。如果需要同时添加行中的多列数据,可使用制表符(vbTab)分隔字符串。index为新增加行在控件中的位置,第一行的index为0,如果省略index,则新增行成为控件最后一行
清除MSFlexGrid控件中的数据可使用clear方法,如:MSFlexGrid1.clear也可以使用RemoveItem方法来删除指定的行,如删除第2行
MSFlexGrid1.RemoveItem(2)
步骤:
(1)创建command对象,使用?作为select语句中的查询参数。如:
Objcmd.commandtext="select*from 系统用户 where 用户名 like?"
(2)使用command对象CreatParameter方法创建参数对象,然后将其添加到command对象的Parameters集合中
如:创建一个名为“用户名”的参数对象,然后将其添加到command对象objcmd的Parameters集合中
dim Parm as new parameter set parm =objcmd.createparameter("用户名",advarchar,adparaminput,10) objcmd.parameters.append parm
(3)设置查询参数的值。例如
objcmd("用户名")=“admin”
注:如果查询参数在创建时没有指定默认值,则在执行Execute方法前必须设置查询参数的值,否则将产生错误
设计程序界面
编写代码
Dim objCn As Connection,objCmd As Command
Private Sub cmdQuery_Click()
Dim objRs As New Recordset '定义局部记录集对象
objCmd("用户名") = "%" & TxtUser & "%" '获得查询参数
objCmd("身份") = "%" & TxtStatus & "%"
Set objRs = objCmd.Execute()
MSFlexGrid1.Cols = objRs.Fields.Count
'显示列明 For i = 0 To objRs.Fields.Count - 1
MSFlexGrid1.TextMatrix(0,i) = objRs.Fields(i).Name
Next
'显示查询结果 Dim n As Integer
n = 0
While Not objRs.EOF
MSFlexGrid1.AddItem (objRs!用户名 & vbTab & objRs!口令 _
& vbTab & objRs!身份)
n = n + 1
objRs.MoveNext
Wend
'显示记录的条数
Label4 = "共获得" & n & "条查询结果"
End Sub
'窗体加载时创建数据库的连接和command对象,并建立参数查询。 Private Sub Form_Load()
Set objCn = New Connection '实例化connection对象objcn
strcn = "provider=microsoft.jet.oledb.4.0;persist security info=false;" & _
"data source=" & "D:\VB98\数据查询\实例5.mdb"
objCn.ConnectionString = strcn '创建数据库连接
objCn.Open
'创建执行参数查询的command对象objcmd Set objCmd = New Command
Set objCmd.ActiveConnection = objCn
With objCmd
.CommandText = "select * from 系统用户 where 用户名 like ?" & _
"and 身份 like ?"
.CommandType = adCmdText
End With
'为command对象objcmd 创建参数
Dim parm As New Parameter
Set parm = objCmd.CreateParameter("用户名",adVarChar,adParamInput,10)
objCmd.Parameters.Append parm
Set parm = objCmd.CreateParameter("身份",10)
objCmd.Parameters.Append parm
Label4 = "" '清除标签4
End Sub
Private Sub form_unload(cancel As Integer)
Set objCmd = Nothing
objCn.Close
Set objCn = Nothing
End Sub
运行结果