小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

在Recordset對象中查詢記錄的方法

 平白 2009-01-17
在Recordset對象中查詢記錄的方法
        無論是 DAO 還是 ADO 都有兩種從 Recordset 對象中查詢記錄的方法: Find 方法和 Seek 方法。在這兩種方法中可以讓你指定條件進行查詢與其相應(yīng)的記錄 , 一般而言,在相同條件下, Seek 方法提供了比 Find 方法更好的性能,因為 Seek 方法是基于索引的。因為這個原因基本提供者必須支持 Recordset 對象上的索引,可以用 Supports ( adSeek ) 方法確定基本提供者是否支持 Seek ,用 Supports ( adIndex ) 方法確定提供者是否支持索引。(例如, OLE DB Provider for Microsoft Jet 支持 Seek Index 。),請將 Seek 方法和 Index 屬性結(jié)合使用。如果 Seek 沒有找到所需的行,將不會產(chǎn)生錯誤,該行將被放在 Recordset 的結(jié)尾處。執(zhí)行此方法前,請先將 Index 屬性設(shè)置為所需的索引。此方法只受服務(wù)器端游標支持。如果 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

例如,用用這個過程查詢“羅期文商貿(mào)”示例數(shù)據(jù)庫中“客戶”表的“國家”等于 USA 的記錄,可以使用下面的代碼:

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

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

( 譯者注:如果你安裝的是簡體中文版要將相應(yīng)的字段名改成中文


 

ADO Seek 方法

因為 ADO Seek 方法使用 Index ,最好是在用這個方法之前指定一個索引,可是,如果你沒有指定索引, Jet database engine 將用主鍵。

如果你需要從多個字段中指定值做為搜索條件,可以用 VBA 中的 Array 函數(shù)傳遞這些值到參數(shù) KeyValues 中去。如果你只需要從一個字段中指定值做為搜索條件,則不需要用 Array 函數(shù)傳遞。

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"

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

' Select the index used to order the

' data in the recordset.

.Index = strIndex

' Open the table by using a scrolling

' Recordset object.

.Open Source:=strTable, _

ActiveConnection:=cnn, _

CursorType:=adOpenKeyset, _

LockType:=adLockOptimistic, _

Options:=adCmdTableDirect

' Find the order where OrderId = 10255 and

' ProductId = 16.

.Seek KeyValues:=varKeyValues, SeekOption:=adSeekFirstEQ

' If a match is found, print the value of

' the specified field.

If Not .EOF Then

Debug.Print .Fields(strDisplayField).Value

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

例如,用主鍵索引查詢“羅期文商貿(mào)”示例數(shù)據(jù)庫中“訂單明細”表的“訂單編號”等于 10255 并且產(chǎn)品編號等于 16 的 ” 數(shù)量 ” 的值,可以使用下面的代碼:

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

“PrimaryKey”, “Order Details”, Array(10255,16), ”Quantity”

( 譯者注:如果你安裝的是簡體中文版要將示例中引用的相應(yīng)的字段名改成中文 )

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多