ACCESS 2013:尝试更新一个表中的两个字段,其中许多字段来自另一个表

时间:2015-08-31 16:31:35

标签: vba ms-access-2013

我在Access中有一个链接表,我想从本地表更新。问题是链接表用于规范,因此每个属性包含一行。例如,链接表中使用的两个字段是ATTRIBUTE_DESC和ATTRIBUTE_VALUE。每个规范可能有多个描述。以下是链接表中的示例:

SPECIFICATION_NO    SPEC_SEQ_NO ATTRIBUTE_DESC    ATTRIBUTE_VALUE
------------------  ----------- ---------------   -----------------
0000000001          10          MANUFACTURER      AMERICAN DARLING
0000000001          15          MODEL             B84B-5
0000000001          20          YEAR MANUFACTURED 2000
0000000001          25          DATE INSTALLED    5/3/1999
0000000001          30          EXTENSION LENGTH    
0000000001          35          MAIN VALVE SIZE   6
0000000001          40          ISOLATION VALVE   DIAMETER  
0000000001          45          ISOLATION VALVE   DIRECTION 
0000000001          50          ISOLATION VALVE   DISTANCE  
0000000001          55          AS BUILT #        C025-106-113
0000000001          60          ENVIRONMENT 
0000000001          65          STR 
0000000001          70          FIVE YEAR PM DUE  OCTOBER 2015

本地表根据链接表中的ATTRIBUTE_DESC具有不同的ATTRIBUTE_VALUES。例如,MANUFACTURER上面可能是CLOW而不是AMERICAN DARLING。

我创建的查询包含表中的所有相关规范信息,并且我使用了具有不同条件的ATTRIBUTE_DESC来更新ATTRIBUTE_VALUE。

不幸的是这样做我得到一个错误“Duplicate Output Destination”PROD_SA_SPECIFICATION_DETAILS.ATTRIBUTE_VALUE“。所以我的问题是是否有更好的方法来更新这种类型的表 - 通过不同的查询设置或通过VBA。我不知道多少VBA所以如果这是最好的答案,我可以得到其中一个属性的例子吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我的查询是这样的:

正在更新的表:PROD_SA_SPECIFICATION_DETAILS

字段:ATTRIBUTE_VALUE 表:PROD_SA_SPECIFICATION_DETAILS 更新至:[更新:SA_SPECIFICATION_DETAILS]。[ATTRIBUTE_VALUE] 标准:制造商

所以我对每个标准都一样,没有一个标准重复。在上面的情况中,如上所述将有13个具有不同标准。我知道我可以使用序列号,因为它们对于每个规范是不同的,但我们偶尔添加行和删除行,我宁愿不必记住更新查询,以便错误的信息进入错误的字段。

我意识到这个表没有规范化,这是设计的(责怪Oracle)。它没有标准化,因为各种规格可能是可变长度,即一些可能有10行,有些可能有12.这个表有两个部分,另一个是SA_SPECIFICATION_DATA,它由specification_no链接。