Ms access 如何正确使用DAO数据库中的Seek
我正在尝试在我的表上的列表框控件中搜索当前选定的项 在更新事件后的列表框控件中,我有以下代码Ms access 如何正确使用DAO数据库中的Seek,ms-access,vba,dao,Ms Access,Vba,Dao,我正在尝试在我的表上的列表框控件中搜索当前选定的项 在更新事件后的列表框控件中,我有以下代码 Private Sub lst_MainList_AfterUpdate() Dim theDB As DAO.Database Dim theProposalsTable As DAO.Recordset Set theDB = CurrentDb Set theProposalsTable = theDB.OpenRecordset("tbl_PROPOSAL",
Private Sub lst_MainList_AfterUpdate()
Dim theDB As DAO.Database
Dim theProposalsTable As DAO.Recordset
Set theDB = CurrentDb
Set theProposalsTable = theDB.OpenRecordset("tbl_PROPOSAL", dbOpenDynaset)
theSeeker theProposalsTable, Me.lst_PPpg_MainList.Value
End Sub
然后我在模块1上有一个子模块,上面有这个代码。我从一个示例代码@
我收到运行时错误3251此类型的对象不支持此操作
当我点击Debug时,它会在链接页面的这一点上突出显示
.Seek“=”、intSeek
在索引表类型记录集对象中查找记录
。。。“表类型记录集”意味着您必须使用dbOpenTable
而不是dbOpenDynaset
和OpenRecordset()
这一点至关重要。如果无法使用dbOpenTable
打开表,则无法使用Seek
。和dbOpenTable
只能与当前数据库中包含的本机访问表一起使用。它不能与任何类型的链接表一起使用
因此,如果dbOpenTable
与tbl\u提案
兼容,此更改将消除第一个错误
'Set theProposalsTable=theDB.OpenRecordset(“tbl\U提案”,dbOpenDynaset)
设置ProposalTable=theDB.OpenRecordset(“tbl_提案”,dbOpenTable)
如果这样做有效,下一个错误将是#3019,“操作无效,没有当前索引”。这是因为您必须在调用Seek
之前设置控制索引
带有rstTemp的
'存储当前记录位置。
书签=.Bookmark
'设置索引。
.Index=“PrimaryKey””无法对链接表使用Seek方法,因为无法将链接表作为表类型记录集对象打开
但是,如果使用OpenDatabase方法打开后端数据库,则可以使用Seek方法
因此,不是:
Set theDB = CurrentDb()
这样做:
Set theDB = OpenDatabase("full path to backend database")
Set theProposalsTable = theDB.OpenRecordset("tbl_PROPOSAL", dbOpenTable)
当我使用dbOpenTable
时,出现运行时错误3219无效操作。我使用access 2016只是为了以防万一它是链接的access表。我的前端与数据分离。数据存储在一个访问文件中。前端使用链接表管理器访问它,但两者都是access数据库而不是SQL数据库。如果我的设置是链接表,我还可以使用什么来搜索记录?findfirst可以工作吗?是的,findfirst
应该可以工作。它不需要“表类型记录集”。是的,这当然很有用。如果不可能,这就是问题的答案,因为它说“如何正确使用…”如果seek在链接表中不起作用,即使链接表是access tables,那么您必须回答这个问题。
Set theDB = OpenDatabase("full path to backend database")
Set theProposalsTable = theDB.OpenRecordset("tbl_PROPOSAL", dbOpenTable)