【发布时间】:2016-07-22 06:14:05
【问题描述】:
我有一个 Access VBA 程序,它连接两个表并将它们存储在另一个表中。我的问题是,不是在commonField 上加入 SQL 查询并拥有带有 commonField 字段的新表,而是新表具有名为 tableName1_commonField 的 commonField 和另一个名为 tableName2_commonField 的新表。
所以,如果查询如下:
SELECT IIPM.*, UNIX.* INTO [UNIX_lob] FROM IIPM INNER JOIN UNIX ON IIPM.[appcode_0] =
UNIX.[appcode_0];
然后,IIPM 和 UNIX 之间共有的 appcode_0 字段在我希望它保持为单个字段 appcode_0 时在新表 UNIX_lob 中成为两个名为 IIPM_appcode_0 和 UNIX_appcode_o 的字段.
我已经在 SQL 查询执行后追踪到这一点:
' Set the name of the new table where the joins will be stored. '
newTableName = "[" + tableName2 + "_lob]"
' Join tableName1 and tableName2 on commonField, and store the joined data in newTableName '
sqlJoinQuery = "SELECT " + tableName1 + ".*, " + tableName2 + ".*" & _
" INTO " + newTableName & _
" FROM " + tableName1 & _
" INNER JOIN " + tableName2 & _
" ON " + tableName1 + "." + commonField + " = " + tableName2 + "." + commonField + ";"
Debug.Print sqlJoinQuery
CurrentDb.Execute sqlJoinQuery
【问题讨论】:
-
这将是 Access VBA 的预期行为,因为您不能有 2 个名称相同的列。但是你的问题是什么?为什么会这样?因为字段名称在表之间重复,并且您选择通配符所有列。如何阻止它?不要选择所有列。如何追加而不是加入?使用联合所有
-
我不知道这是预期的行为,并认为这是编写查询时的错误。谢谢 - 在这种情况下,如果我重命名这些列之一,那就足够了。
-
马特所说的。我能想到的一般情况下没有任何真正的方法可以做到这一点,您将不得不实际列出所有字段。好吧,也许您可以遍历字段集合并将它们全部写入数组,但这听起来像是一场噩梦。
-
如果先使用 create table 创建 newTableName,然后用 insert 语句填充它,则不需要重命名列