我有两张桌子。在表1中,我有2列如下,Doc No
是(pk)
Doc No Title
-------- -----------
Doc-0001 test-0001
Doc-0002 test-0002
在表2中,我还有两列Doc No
(pk),Transmittal
(pk)
Doc No Transmittal
--------------------------
Doc-0001 TT-0001
Doc-0001 TT-0002
Doc-0002 TT-1000
现在我想创建一个基于表1的3个字段的表单,如下所示,如果我在表2中有每个Doc No的相关记录,它在表单中显示,并在表单中勾选复选框,并且在未勾选复选框时它删除了相关记录table2。
我已经考虑过以下步骤,但我有一些疑问:
我必须根据table1编写一个查询,它有一个计算列,如果在表2中找到相关记录,则返回(0)或(-1)。
Doc No title checkbox
我必须为表格的复选框写一个更新前事件,以便在取消勾选复选框时删除表2中的相关记录。
我的问题是关于查询中的计算列。我可以更新吗?
我的意思是我可以在形式中取消它吗?或者只是它是一个只读字段,我不能勾选或取消它,所以事件过程不起作用?
请问有什么解决方案?
答案 0 :(得分:0)
包含计算字段的查询不可更新。
this questions answer旁边的Johnny Bones,了解查询是否可更新的概述。
如果要在表单中使用计算字段,则不应在基础表中进行计算,而应在控件的控制源中进行计算字段。
但是,仍然会使计算字段为只读(但是,与在查询中使用计算字段时相比,表单的其余部分不会显示)。要解决此问题,您需要在VBA中进行所需的计算,并在更改VBA中的字段时编写所需的行为。
使用VBA方法的示例:(计算字段存储2个字段的总和,更改它会更改第一个字段)
Public Sub Form_Current()
MyUnboundTextbox.Value = Field1.Value + Field2.Value
End Sub
Private Sub MyUnboundTextbox_AfterUpdate()
Field1.Value = MyUnboundTextbox.Value - Field2.Value
End Sub