2017-05-12 77 views
0

我有一个访问2010数据库,我正在使用它来跟踪设备的安装。表单复选框更新后访问2010更新表字段

一个表(tblSerial_Numbers)包含了所有的设备部件号和序列号用的是/否字段类型,表示无论是安装还是不

第二个表(tblInstallation)跟踪安装数据即日期,地点,部分#,序列号等...

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

我的问题是我想在同一个窗体上的复选框来更新tblSerial_numbers中的安装字段。

所以对于复选框我有tblSerial_Numbers一个用下面的代码

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

这是应该使用的形式组合框(cboSerNum)设置指定的序列号更新事件子后“已安装”无论窗体上的复选框是什么,但它不工作。也没有错误。

任何帮助表示赞赏。

UPDATE:

语法错误已经得到解决,更新安装领域tblSerial_Numbers仍然没有工作。

+1

你有WHERE –

+0

^我们有一个赢家顶顶丁 –

+0

感谢弥敦道 那固定的语法之前没有空格字符错误...但更新查询不会改变tblSerial_Numbers中已安装字段的状态 – k1162

回答

0

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

问题的核心是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