创造SQL语句的MS Access VBA脚本:结合更新和选择SQL语句
我有一个派生两个字段在新表SATable SQL语句:
SQLScript = "SELECT [DATA OUTPUT TABLE].* INTO SATable"
SQLScript = SQLScript & " FROM [DATA OUTPUT TABLE]"
SQLScript = SQLScript & " WHERE ((([DATA OUTPUT TABLE].[Journal Voucher ID]) In (SELECT [DATA OUTPUT TABLE].[Journal Voucher ID]"
SQLScript = SQLScript & " FROM [DATA OUTPUT TABLE]"
SQLScript = SQLScript & " GROUP BY [DATA OUTPUT TABLE].[Journal Voucher ID]"
SQLScript = SQLScript & " HAVING (((First([DATA OUTPUT TABLE].dBranch))=" & Chr(34) & "Navy" & Chr(34) & ") AND ((Last([DATA OUTPUT TABLE].dBranch))=" & Chr(34) & "USMC" & Chr(34) & ")) OR (((First([DATA OUTPUT TABLE].dBranch))=" & Chr(34) & "USMC" & Chr(34) & ") AND ((Last([DATA OUTPUT TABLE].dBranch))=" & Chr(34) & "Navy" & Chr(34) & "));)));"
DoCmd.RunSQL SQLScript
然后,我有一份声明中说需要这两个派生的字段,并追加到他们原来的表:
DoCmd.RunSQL "UPDATE SATable INNER JOIN [DATA OUTPUT TABLE] ON (SATable.[Journal Voucher ID] = [DATA OUTPUT TABLE].[Journal Voucher ID]) AND (SATable.dBranch = [DATA OUTPUT TABLE].dBranch) SET [DATA OUTPUT TABLE].[Shared Appropriations] = [SATable].[dBranch] & " & Chr(34) & " Shared Appropriation" & Chr(34) & ";"
我的目标是消除SATable并在一条语句执行此操作。
我一直在努力解决这样的问题,所以不要只提供一个答案,你可以请提供一些解释 - 教一个人去钓鱼!
干杯, -E
编辑:----------------------------------- -------------------------- 数据输出表具有:
JVID dBranch SA
1 Navy N/A
2 Navy N/A
3 Navy N/A
4 Navy N/A
A USMC N/A
B USMC N/A
3 USMC N/A
4 USMC N/A
所以SATable变为:
JVID dBranch SA
3 Navy Navy SA
3 USMC USMC SA
4 Navy Navy SA
4 USMC USMC SA
然后更新查询更新SA字段,默认为N/A
JVID dBranch SA
1 Navy N/A
2 Navy N/A
3 Navy Navy SA
4 Navy Navy SA
A USMC N/A
B USMC N/A
3 USMC USMC SA
4 USMC USMC SA
我怀疑你可能可以简化一下SQL。我认为如果您用示例数据和预期的输出显示表格会有所帮助。 –
我无法共享数据,但我会扩展意图 – Schalton
因此,您希望一步选择出[数据输出表]并[SATable](在第三个表中有结果)?或者你想要更新发生在[数据输出表]? –