【发布时间】:2020-11-04 21:00:56
【问题描述】:
我正在尝试根据 Form.Current 事件中 Form.Recordset 中字段的当前值执行一些操作。
一个例子是
If Me.RecordSet("LastUpdate") < "#1 Jan 2020#" Then MsgBox "Last year's Comment"
Me.RecordSet 可能类似于“SELECT ID, LastUpdate, Comment FROM Comment WHERE ID = 12”,或者它也可以返回多个记录,例如"SELECT ID, LastUpdate, Comment FROM Comment WHERE ID
我收到错误 3021:上一行没有当前记录。看起来虽然 Form.Current 事件已经启动并且 Me.Recordset 属性正确地给出了底层 SQL,但记录集还没有被填充?
如果在调试此行时在即时窗格中执行Me.Recordset.MoveFirst,则它可以工作。但当然,每次 Form.Current 事件触发时将当前记录重置为第一条记录并不是前进的方向......
我觉得很奇怪,在 Form.Current 事件中,Form.Recordset 还没有被填充?这是正确的吗?对正确的方法来做我想做的事情有什么想法吗?
基础表位于 MySql 服务器上,尽管这应该无关紧要?
编辑:Form.Current 事件似乎触发了 3 次......并且只有最后一次触发了此错误。所以忽略错误可能是可行的,但显然我想了解为什么该事件被触发 3 次......我需要查看调用代码。
仍然不确定我是否理解 Form.Recordset 如何/为什么会失效。
【问题讨论】:
-
On error resume next 意味着代码将不会运行。我正在尝试让代码(正确)运行。
-
我看不到 LastUpdate 如何帮助我从绑定到表单的记录集中获取值?我正在检索的值在 Form.Recorset 中,但未绑定到控件。使用 Recordset 访问绑定的 Recordset 效果很好,但在触发 Form.Current 事件时似乎没有填充。
-
请评论您所指的答案。你试过
Me.LastUpdate.Value吗? -
请阅读我链接的文档页面。它解释了使用
Form.Recordset可以做什么和不可以做什么。表单的当前记录遵循其.Recordset- 但不是相反,这正是您的问题。 -
@Andre Me.LastUpdate.Value 在即时窗格中给出“未找到方法或数据成员”。 Access VBA 似乎无法识别 LastUpdate。你的意思是别的吗?您链接到的 Form.Recordset 文档页面显示“使用该属性来使用表单不直接支持的 Recordset 对象的方法”,这就是我想要做的。