【问题标题】:What Event is fired when Access is leaving one record and moving to next?当 Access 离开一条记录并移至下一条记录时会触发什么事件?
【发布时间】:2018-11-21 21:28:00
【问题描述】:

我正在开发一个 MS Access 2016 应用程序,并在表单上绑定了控件。在这个过程的后期,我决定我想要一个多选列表框。

据我所知,您无法将多选列表框绑定到表格。我可以在即将离开该记录时解析列表框,并将逗号分隔的值列表放在绑定的、不可见的文本框中。然后在到达新记录时,根据该记录的文本框中的值设置列表框中的值。

当前事件让我知道我何时达到了新记录,但是否有事件让我知道我要离开记录?更新前仅在当前记录发生更改时才有效,而不仅仅是导航到新记录。我怀疑我遗漏了一些真正基本的东西。

【问题讨论】:

  • 只使用listboxon change事件更新隐藏文本框?

标签: ms-access vba


【解决方案1】:

如果要解析字段并手动将其更新为表格,请使用 Before InsertBefore Update 事件。不要对导航做任何事情,因为那样你可能为时已晚。

此外,请确保在列表框的值发生更改时弄脏表单(On Change 事件中的Me.Dirty = True),以便在导航时触发更新。

或者,就像 krish KM 所说,只要确保每次列表框更改时文本框都会更改。

这比考虑导航、过滤、关闭表单、手动保存等更可靠。

【讨论】:

  • @ Erik - 我不确定你是否建议设置 Me.Dirty = True ,我不认为这是可能的?我认为您必须更改表单数据才能强制更改?
  • @Minty 不,如果你不相信我的话,你可以测试它。将事件处理程序添加到绑定表单的更新前事件,然后运行Me.Dirty = True,然后运行DoCmd.GoToRecord(默认为下一条记录)。即使您没有更改任何内容,事件处理程序也会触发。执行Me.Dirty = True后,记录选择器也会变为编辑铅笔。
  • @Erik - 我相信你!我确定我在某处读到它只能设置为 False。但这没有意义,因为它是“正常”属性。
  • 我今天仍在尝试为此争取一些时间,但似乎解决方案是使用 Listbox 的 on Exit 事件将列表值解析到文本框,Form 的 Current 事件从文本框解析到列表框。上面的解决方案让我不再只考虑Form事件,而是考虑一个控制事件来满足我的需求。
  • 请注意,对列表框退出事件的解析是次优的,在列表框具有焦点时关闭表单可能会导致该事件不触发,并且重复进入和退出列表框会导致您每次都对其进行解析。如前所述,我建议仅在值实际提交时(如更新/插入)并在值更改时立即进行解析。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-24
  • 2022-08-16
  • 1970-01-01
  • 2020-07-07
  • 2011-07-12
相关资源
最近更新 更多