Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何正确使用DAO数据库中的Seek_Ms Access_Vba_Dao - Fatal编程技术网

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)