【发布时间】:2017-07-24 14:51:10
【问题描述】:
我想使用另一个表中的数字更新一个表,我想做以下表格
Y-X(1)-(A1+A2+A3)
X 来自 table1,而 Y,A1,A2,A3 来自 table2。新记录将在 X 列中更新,其中 ID 只有一条记录 = 0
表1
ID || X
-------------
1 || **0**
1 || 155
2 || 4
3 || 0
3 || 0
3 || 234
4 || 0
4 || 0
表2
ID || Y || A1 || A2 || A3
--------------------------------------
1 || 228 || 1 || 3 || 4
2 || 112 || 6 || 7 || 7
3 || 4 || 22 || 1 || 0
4 || 78 || 76 || 6 || 2
从上面的示例表中,唯一与证书匹配的列是 ID=1,其中只有一个是 0,计数 = 2,所以列 X 其中 =0 将被更新 (X2= 228-155-(1+3+4))
更新表1
ID || X
-------------
1 || **65**
1 || 155
2 || 4
3 || 0
3 || 0
3 || 234
4 || 0
4 || 0
我的代码是
Private Sub GET_TWO_INJLINE_EST()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE table1 I, table2 P" _
& " SET I.X = IIf(I.X = 0, DLookup(""P.Y-I.X-(P.A1 + P.A2 + P.A3)"" , " _
& " ""table1"", ""[ID]="" & [ID] & "" AND I.X <> 0""), I.X)" _
& " WHERE I.[ID] IN (SELECT I.[ID] FROM table1 I" _
& " GROUP BY I.[ID] HAVING (Count(I.[ID]) = 2)" _
& " AND (Min(I.ID) <> Max(I.X))" _
& " AND (Min(I.X) = 0 OR Max(I.X) = 0))" _
& " AND I.ID=P.ID"
DoCmd.SetWarnings True
End Sub
当我运行它时显示“未知”错误。
【问题讨论】: