在我的ms-access vba项目中,我使用子表单中的me.Recordset将当前记录集传递给函数(在其中读取字段)。
这是第一次工作,但在某个点之后,我得到了错误:
3021 - no current record ("Kein aktueller Datensatz")这很奇怪,因为我可以看到记录,所有字段都可以用!-operator访问(就像我一样!EM_KEY_PE),Me.Recordset.RecordCount是1,me.Recordset.EOF是假的。
Debug.Print Me.Recordset!EM_KEY_PE在Me!EM_KEY_PE工作时也会引发相同的错误。
在执行如下操作后,记录集将变得无效:使父窗体再次不可见且可见,保存数据集并为父窗体设置新位置。
那怎么解决这个问题?
到目前为止我尝试过的事情:
发布于 2020-07-06 09:28:58
这句话看上去像是:
Me.RecordSource = Me.RecordSource还原记录集并修复我的问题。我在Form.Recordset https://learn.microsoft.com/en-us/office/vba/api/Access.Form.Recordset的microsoft文档中找到了这个。
但是,当这一行更改选择的位置时,我创建了这个函数来修复我的记录集("LFD“是我的主键):
Public Sub fn_repairFormRecordset(ByVal par_form As Form)
Dim rs As DAO.Recordset
Dim currentLfd As Long
On Error GoTo fn_repairFormRecordset_error
currentLfd = par_form("LFD")
par_form.RecordSource = par_form.RecordSource
Set rs = par_form.RecordsetClone
rs.FindFirst "[LFD]=" & currentLfd
par_form.Bookmark = rs.Bookmark
fn_repairFormRecordset_exit:
Exit Sub
fn_repairFormRecordset_error:
Call msg_error_norm(ModuleName, "fn_repairFormRecordset")
GoTo fn_repairFormRecordset_exit
End Sub我从这里得到的代码的一部分:https://www.devhut.net/2012/10/19/ms-access-vba-requery-a-form-while-remaining-on-the-same-record/
但我仍然不知道究竟是什么原因导致记录集失效。
发布于 2020-07-06 12:12:31
假设选择了记录,则可以导航到当前窗体记录。
Dim rs As DAO.Recordset
Set rs = Me.Recordset
rs.Bookmark = Me.Bookmark如果您没有导航到特定的记录,则任何位置都可以有效。如果这是EOF或BOF,则会得到无当前记录错误。
https://stackoverflow.com/questions/62752028
复制相似问题