Access表单创建记录时更新另一表字段的实现问题
Access设备出库表单联动更新设备状态问题及解决
问题背景
- 已搭建绑定至
tblDevicesOut表的设备出库录入表单frmDevicesOut,仅支持新增数据,带有保存按钮,包含以下字段:OutDate:日期/时间类型UserID:短文本类型,下拉框数据来源于tblUsers表DeviceID:短文本类型,下拉框数据来源于tblDevices表Form:附件字段,用于上传签字表单Comments:短文本类型
- 表单目前可正常在
tblDevicesOut表中生成对应新记录,需求是在创建新出库记录时,自动将tblDevices表中对应设备的GivenOut(是/否类型)字段更新为“是”。 - 尝试编写的SQL语句(存在语法错误):
UPDATE tblDevices SET GivenOut = True WHERE frmDevicesOut.cmbDeviceID.Value = tblDevices.DeviceID
- 遇到的问题:单独创建查询执行时无法直接引用表单控件;使用VBA的
DoCmd.RunSQL执行时提示UPDATE语法错误,不清楚如何正确从表单下拉框cmbDeviceID获取选中值。
最终解决方案
编辑:已确认无需拆分
tblDevicesOut和tblDevicesIn表,将合并两表。同时已解决GivenOut字段的更新问题,最终采用Form_BeforeUpdate事件实现,VBA代码如下:
Private Sub Form_BeforeUpdate(Cancel As Integer) DoCmd.SetWarnings False DoCmd.RunSQL "UPDATE tblDevices SET tblDevices.GivenOut = True WHERE (((tblDevices.ConfigNum)=[Forms]![frmlDevicesOut]![cmbConfigNum]));;" DoCmd.SetWarnings True End Sub
内容的提问来源于stack exchange,提问作者Mike T
相关产品推荐
相关产品推荐

