现在的位置: 首页 >> 数据库 >> Access >> 在Recordset对象中查询记录的方法
添加时间:2005-8-16 来源:网教中国 作者:
在Recordset对象中查询记录的方法


无论是 DAO 还是 ADO 都有两种从 Recordset 对象中查询记录的方法: Find 方法和 Seek 方法。在这两种方法中可以让你指定条件进行查询与其相应的记录 , 一般而言,在相同条件下, Seek 方法提供了比 Find 方法更好的性能,因为 Seek 方法是基于索引的。因为这个原因基本提供者必须支持 Recordset 对象上的索引,可以用 Supports ( adSeek ) 方法确定基本提供者是否支持 Seek ,用 Supports ( adIndex ) 方法确定提供者是否支持索引。(例如, OLE DB Provider for Microsoft Jet 支持 Seek Index 。),请将 Seek 方法和 Index 属性结合使用。如果 Seek 没有找到所需的行,将不会产生错误,该行将被放在 Recordset 的结尾处。执行此方法前,请先将 Index 属性设置为所需的索引。此方法只受服务器端游标支持。如果 Recordset 对象的 CursorLocation 属性值为 adUseClient ,将不支持 Seek 。只有当 CommandTypeEnum 值为 adCmdTableDirect 时打开 Recordset 对象,才可以使用此方法。

ADO Find 方法

DAO 包含了四个“ Find ”方法: FindFirst,FindLast,FindNext FindPrevious .

DAO 方法 ADO Find 方法

下面的一个例子示范了如何用 ADO Find 方法查询记录:

Sub FindRecord(strDBPath As String, _

strTable As String, _

strCriteria As String, _

strDisplayField As String)

' This procedure finds a record in the specified table by

' using the specified criteria.

' For example, to use this procedure to find records

' in the Customers table in the Northwind database

' that have " USA " in the Country field, you can

' use a line of code like this:

' FindRecord _

' "c:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb", _

' "Customers", "Country=' USA '", "CustomerID"

Dim cnn As ADODB.Connection

Dim rst As ADODB.Recordset

' Open the Connection object.

Set cnn = New ADODB.Connection

With cnn

.Provider = "Microsoft.Jet.OLEDB.4.0"

.Open strDBPath

End With

Set rst = New ADODB.Recordset

With rst

' Open the table by using a scrolling

' Recordset object.

.Open Source:=strTable, _

ActiveConnection:=cnn, _

CursorType:=adOpenKeyset, _

LockType:=adLockOptimistic

' Find the first record that meets the criteria.

.Find Criteria:=strCriteria, SearchDirection:=adSearchForward

' Make sure record was found (not at end of file).

If Not .EOF Then

' Print the first record and all remaining

' records that meet the criteria.

Do While Not .EOF

Debug.Print .Fields(strDisplayField).Value

' Skip the current record and find next match.

.Find Criteria:=strCriteria, SkipRecords:=1

Loop

Else

MsgBox "Record not found"

End If

' Close the Recordset object.

.Close

End With

' Close connection and destroy object variables.

cnn.Close

Set rst = Nothing

Set cnn = Nothing

End Sub

例如,用用这个过程查询“罗期文商贸”示例数据库中“客户”表的“国家”等于 USA 的记录,可以使用下面的代码:

FindRecord “c:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb”, _

“Customers”, “Country=' USA '”, ”CustomerID”

( 译者注:如果你安装的是简体中文版要将相应的字段名改成中文 )

ADO Seek 方法

因为 ADO Seek 方法使用 Index ,最好是在用这个方法之前指定一个索引,可是,如果你没有指定索引, Jet database engine 将用主键。

如果你需要从多个字段中指定值做为搜索条件,可以用 VBA 中的 Array 函数传递这些值到参数 KeyValues 中去。如果你只需要从一个字段中指定值做为搜索条件,则不需要用 Array 函数传递。

Find 方法一样,你可以用 BOF 或者 EOF 属性测试是否查询到记录。

下面的一个例子显示了如何用 ADO Seek 方法查询记录:

Sub SeekRecord(strDBPath As String, _

strIndex As String, _

strTable As String, _

varKeyValues As Variant, _

strDisplayField As String)

' This procedure finds a record by using

' the specified index and key values.

' For example, to use the PrimaryKey index to

' find records in the Order Details table in the

' Northwind database where the OrderID field is

' 10255 and ProductID is 16, and then display the

' value in the Quantity field, you can use a line

' of code like this:

' SeekRecord _

' "c:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb", _

' "PrimaryKey", "Order Details", Array(10255, 16), "Quantity"



[1] [2]  下一页


上一篇:Access数据库和项目之间的数据类型的比较或映射 下一篇:Microsoft数据引擎 MSDE
大部分文章摘自网上,如有侵犯您的权益请与我们联系,我们会第一时间进行处理,谢谢! [ 打印文章 ] [ 关闭窗口 ]
推荐文章
·ACCESS中使用SQL语句应注意的地
·用CELL组件显示Access数据库的图
·怎样可以从ACCESS中打印一个WORD
·加解密文本的函数
·防止Access 2000密码被破译的方
·Access安全性之QA详解
·处理加了密码的MDB文件
·在Access中实现密码管理的另一种
·时间格式在sql server中更新带来
·如何定义自动编号字段的初始值和
相关文章
 
最新文章
·在Delphi中的Access技巧集
·两个未公开的ACCESS方法的使用技
·一个ACCESS数据库数据传递的方法
·Access 2002的三个实用技巧
·access中数据表的自动重新联接
·OrdinalPosition 属性示例
·判断一个字段是否在表中的函数
·Access数据有效性检查
·ACCESS中使用SQL语句应注意的地
·在窗体间传递参数的几种常用办法
Google