2017-10-17 113 views
0

我有两个表格。在表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. 我根据表1编写一个查询,它有一个计算列返回(0)或(-1 )如果在表2中

    Doc No    title   checkbox 
    
  2. 找到相关记录我必须写一个更新之前事件形式的复选框表2中删除相关记录时,取消勾选复选框。

我的问题是关于查询中的计算列。我可以更新吗?

我的意思是我可以在表格中解决这个问题吗?或者只是它是一个只读字段,我不能勾选或取消选中,所以事件过程不起作用?

请问有什么解决方法?

+1

MS-访问不是SQL Server中。 –

回答

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 
+0

谢谢,你的意思是,我必须在我的表单上放一个未绑定的复选框,然后使用当前形式的事件定义chebox的控件源。然后它可以更新?如果可能的话请用简码或解释。 –

+0

不,如果您正在使用计算并希望具有可更新性,则需要在VBA中处理所有内容。看例子。 –

+0

非常感谢,当我的表单是连续形式是一样的吗? –

相关问题