我可以在查询中更新计算字段吗
我有两个表格。在表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
现在我想创建一个表格有3个字段,如下面的表格1所示,如果我在表格2中有每个文档编号的相关记录,它将在窗体中显示,并在表格中用勾号勾选复选框,当未勾选复选框时,它删除相关记录表格2。
我曾经想过,随着像下面的步骤,但我有一些疑问:
-
我根据表1编写一个查询,它有一个计算列返回(0)或(-1 )如果在表2中
Doc No title checkbox
找到相关记录我必须写一个更新之前事件形式的复选框表2中删除相关记录时,取消勾选复选框。
我的问题是关于查询中的计算列。我可以更新吗?
我的意思是我可以在表格中解决这个问题吗?或者只是它是一个只读字段,我不能勾选或取消选中,所以事件过程不起作用?
请问有什么解决方法?
包含计算字段的查询不可更新。
请参阅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
谢谢,你的意思是,我必须在我的表单上放一个未绑定的复选框,然后使用当前形式的事件定义chebox的控件源。然后它可以更新?如果可能的话请用简码或解释。 –
不,如果您正在使用计算并希望具有可更新性,则需要在VBA中处理所有内容。看例子。 –
非常感谢,当我的表单是连续形式是一样的吗? –
MS-访问不是SQL Server中。 –