国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
在Recordset對象中查詢記錄的方法
在Recordset對象中查詢記錄的方法
        無論是 DAO 還是 ADO 都有兩種從 Recordset 對象中查詢記錄的方法: Find 方法和 Seek 方法。在這兩種方法中可以讓你指定條件進(jìn)行查詢與其相應(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ù)器端游標(biāo)支持。如果 Recordset 對象的 CursorLocation 屬性值為 adUseClient ,將不支持 Seek 。只有當(dāng) 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ù)庫中“訂單明細(xì)”表的“訂單編號”等于 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ù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ADO實現(xiàn)單條記錄的刷新《轉(zhuǎn)》
Excel VBA ADO SQL入門教程025:將記錄集轉(zhuǎn)換為數(shù)組
ADO技巧精華10則
VBA連接Mysql數(shù)據(jù)庫
他山之石——VBA數(shù)據(jù)庫操作
第八講 從創(chuàng)建ADO對象,到打開記錄集
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服