【问题标题】:Access 2010 update table field after form checkbox update表单复选框更新后访问 2010 更新表字段
【发布时间】:2017-10-11 23:11:12
【问题描述】:

我有一个用于跟踪设备安装的 access 2010 数据库。

一个表 (tblSerial_Numbers) 包含所有设备部件号和序列号,并带有是/否字段类型以指示是否已安装

第二个表 (tblInstallation) 跟踪安装数据,即日期、位置、部件号、序列号等...

我有一个基于 tblInstallation 的表单,供最终用户输入填充 tblInstallation 所需的所有信息。

我的问题是我想在同一个表单上添加一个复选框来更新 tblSerial_numbers 中的 Installed 字段。

所以对于复选框,我有一个更新后事件子,代码如下

Private Sub chkInstalled_AfterUpdate()
CurrentDb.Execute "UPDATE tblSerial_Numbers " & _
              "SET Installed = " & Nz(Me.chkInstalled) & _
              " WHERE Serial_Number = " & Nz(Me.cboSerNum)
End Sub

这应该使用表单组合框 (cboSerNum) 中指定的序列号将 tblSerial_Numbers 中的“已安装”设置为表单上的复选框,但它不起作用。也没有错误。

感谢任何帮助。

更新:

语法错误已解决,更新 tblSerial_Numbers 中的已安装字段仍然无法正常工作。

【问题讨论】:

  • WHERE 前没有空格符
  • ^ 我们有一个赢家丁丁丁
  • 感谢 Nathan 修复了语法错误...但更新查询并未更改 tblSerial_Numbers 中已安装字段的状态
  • 是文本类型的序列号。
  • me.chkInstalled 和 me.cboSerNum 是否都有值?

标签: vba checkbox ms-access-2010


【解决方案1】:

我已经能够解决这个问题了。

问题的核心是 tblInstallation 中的 SerNum 字段。这是从 tblSerial_numbers 查找的。 cboSerNum 中的值是 tblSerial_Numbers 中记录的主键(自动编号),而不是设备的实际序列号。

对 SQL 查询的简单修改修复了 tblSerial_Numbers 中安装字段的更新。

 Private Sub chkInstalled_AfterUpdate()
 CurrentDb.Execute "UPDATE tblSerial_Numbers " & _
                   "SET Installed = " & Nz(Me.chkInstalled) & _
                   " WHERE ID = " & Nz(Me.cboSerNum)
 End Sub

这是我的最终代码(只是让它看起来更传统)

 Private Sub chkInstalled_AfterUpdate()

 CurrentDb.Execute "UPDATE tblSerial_Numbers " & _
                   "SET tblSerial_Numbers.[Installed] = " & Me.chkInstalled & _
                   " WHERE tblSerial_Numbers.[ID] = " & Me.cboSerNum & ";"

 End Sub 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多