多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > access > 在Recordset對(duì)象中查詢記錄的方法

在Recordset對(duì)象中查詢記錄的方法

來源:程序員人生   發(fā)布時(shí)間:2013-11-04 03:26:14 閱讀次數(shù):2832次
無論是 DAO 還是 ADO 都有兩種從 Recordset 對(duì)象中查詢記錄的方法: Find 方法和 Seek 方法。在這兩種方法中可以讓你指定條件進(jìn)行查詢與其相應(yīng)的記錄 , 一般而言,在相同條件下, Seek 方法提供了比 Find 方法更好的性能,因?yàn)?Seek 方法是基于索引的。因?yàn)檫@個(gè)原因基本提供者必須支持 Recordset 對(duì)象上的索引,可以用 Supports ( adSeek ) 方法確定基本提供者是否支持 Seek ,用 Supports ( adIndex ) 方法確定提供者是否支持索引。(例如, OLE DB Provider for Microsoft Jet 支持 Seek Index 。),請(qǐng)將 Seek 方法和 Index 屬性結(jié)合使用。如果 Seek 沒有找到所需的行,將不會(huì)產(chǎn)生錯(cuò)誤,該行將被放在 Recordset 的結(jié)尾處。執(zhí)行此方法前,請(qǐng)先將 Index 屬性設(shè)置為所需的索引。此方法只受服務(wù)器端游標(biāo)支持。如果 Recordset 對(duì)象的 CursorLocation 屬性值為 adUseClient ,將不支持 Seek 。只有當(dāng) CommandTypeEnum 值為 adCmdTableDirect 時(shí)打開 Recordset 對(duì)象,才可以使用此方法。

ADO Find 方法

DAO 包含了四個(gè)“ Find ”方法: FindFirst,FindLast,FindNext FindPrevious .

DAO 方法 ADO Find 方法

下面的一個(gè)例子示范了如何用 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 FilesMicrosoft officeOfficeSamplesNorthwind.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

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

FindRecord “c:Program FilesMicrosoft OfficeOfficeSamplesNorthwind.mdb”, _

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

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

ADO Seek 方法

因?yàn)?ADO Seek 方法使用 Index ,最好是在用這個(gè)方法之前指定一個(gè)索引,可是,如果你沒有指定索引, Jet database engine 將用主鍵。

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

Find 方法一樣,你可以用 BOF 或者 EOF 屬性測(cè)試是否查詢到記錄。

下面的一個(gè)例子顯示了如何用 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 FilesMicrosoft OfficeOfficeSamplesNorthwind.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ì)”表的“訂單編號(hào)”等于 10255 并且產(chǎn)品編號(hào)等于 16 的 ” 數(shù)量 ” 的值,可以使用下面的代碼:

SeekRecord “c:Program FilesMicrosoft OfficeOfficeSamplesNorthwind.mdb”, _

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

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

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 久久中文字幕不卡一二区 | 亚洲欧美一级久久精品 | 女人18一级特级毛片免费看 | 欧美视频在线观看爱爱 | 乱老女人一二区视频 | 一级毛片视频在线观看 | 在线播放精品 | 国产综合亚洲欧美日韩一区二区 | 又硬又大又湿又紧a视频 | 成人a毛片高清视频 | 欧美一级精品高清在线观看 | 日本综合欧美一区二区三区 | 国产老妇一性一交一乱 | 日本免费新一区二区三区 | 伊人久久大香现线蕉 | 伊人久久大香网 | 在线免费看| 亚洲14p| 欧美成性色 | 欧美精品在线一区 | 日韩欧美中文字幕一区二区三区 | 午夜私人影院在线观看 | 校园春色激情 | 最近新中文字幕大全高清视频 | 免费网站www网站免费 | 日本一区二区在线不卡 | 黄色天堂网站 | 亚洲永久精品免费www52zcm男男 | 精品在线免费观看 | 叼嘿视频在线观看免费 | 欧美亚洲一区二区三区 | 一区二区三区免费视频网站 | free性video西欧极品 | 91在线视频福利 | 老司机午夜在线 | 日本一区二区三区精品国产 | 精品欧美视频 | 亚洲图片自拍偷拍 | 成人自拍视频网站 | 播放四川美女一级毛片半小时 | 日本道色综合久久影院 |