在查询子窗体 Access VBA 中更新之前编辑记录

Posted

技术标签:

【中文标题】在查询子窗体 Access VBA 中更新之前编辑记录【英文标题】:Edit record before update in query subform Access VBA 【发布时间】:2015-07-14 02:01:00 【问题描述】:

这是我所拥有的:

两张表:

tblA:Index,Date_Time,User_Name,Event,Product_Serial_Number

tblB:tblA_Index,Date_Time,User_Name,Event_Tag

Event_Tag 字段用于对事件的不同特征进行分类,例如您在 YouTube 视频中看到的特征,因此是多对一关系。

我有一个显示tblA 信息的主窗体,例如User_Nameindex。我有一个子表单,其数据表视图中仅显示 Event_Tag 字段,其控制源是仅通过从 tblA 获取的索引进行的查询过滤。

我知道在查询中您可以通过在底部输入空白记录来添加记录(如果已启用)。我希望能够为tblA 中的特定索引输入新的Event_Tag 记录。我想知道是否可以在更新之前以编程方式编辑插入到表中的记录?

例如,我在子表单底部输入空白记录 Defective Motor,然后使用 vba 代码从计算机中获取 date_time,从控件中的控件获取 index/User_Name mainform 并添加完成记录,然后插入到tblB

我希望这是一个足够好的例子来展示我正在尝试做的事情。 如果有人能指导我如何解决这个问题,或者有更好的方法,我很感激反馈。

谢谢

【问题讨论】:

为什么两个表中都有用户名? tableA 和 B 无论如何都链接了 好问题,我应该澄清更多。我通过 environ(username) 方法窃取了使用表单的人的姓名。在 tblA 中创建记录的人可能与在 tblB 中创建记录的人不同。为简单起见,我从最初的描述中删除了它,因为我对通过子表单插入之前完成记录的底层方法更感兴趣。 【参考方案1】:

对子表单使用“onBeforeUpdate”事件。在那个事件中

txt_date.value = now()
txt_username.value = your string

等等

【讨论】:

以上是关于在查询子窗体 Access VBA 中更新之前编辑记录的主要内容,如果未能解决你的问题,请参考以下文章

Access VBA:在连续子窗体中编辑 RecordSet

SetParent 装载的窗体 会保留在进程中 如果程序运行中出错,包括更新,查询.... 出错, 该如何卸载窗体

查询不会更新子窗体 MS-Access 中的表

Ms Access中更新主窗体时更新子窗体的相关字段

MS Access VBA - 在数据表子窗体中显示动态构建的 SQL 结果

如何遍历所有子窗体 MS Access VBA