我打算使用 MS Access 作为我程序的数据库。我对 MS Access 一无所知,此时我正在进行反复试验和大量研究。在我的研究中,我发现 Seek 方法可以快速定位与指定值匹配的行。但是,似乎提供程序“Microsoft.ace.OLEDB.12.0”不支持 adSeek 方法。我使用下面的代码发现了这一点。
Sub Test3()
Dim Cn As ADODB.Connection
Dim sConnString As String
Dim rs As New ADODB.Recordset
'Set a connection
Set Cn = New ADODB.Connection
'Set connection string
sConnString = "Provider=Microsoft.ace.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\Database21.accdb" & ";"
Cn.Open ConnectionString:=sConnString
'open recordset
rs.Index = "ID"
rs.CursorLocation = adUseServer
rs.Open "Table1", Cn
'Message if the recordset supports adSeek
MsgBox rs.Supports(adSeek)
Cn.Close
End Sub
鉴于我没有任何数据库或 MS Access 经验,我不知道结论是否正确,或者我只是遗漏了一些东西。我可以通过 MS Access 使用 Seek 方法吗?
最佳答案
Seek: This method can only be used when the Recordset object has been opened with a CommandTypeEnum value of adCmdTableDirect.
所以你需要改成:
rs.Open "Table1", Cn, , , CommandTypeEnum.adCmdTableDirect
我个人很少发现 seek/find/filter 特别有用,执行 SQL SELECT 语句是获取记录的最有效方式。
关于database - Recordset 不支持 adseek,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277711/