2016-07-21 80 views
0

我有一個Access VBA程序,它將兩個表連接起來並將它們存儲在另一個表中。我的問題是,代替加入commonField的SQL查詢並使用commonField字段的新表,新表具有名爲tableName1_commonField的另一個名爲tableName2_commonFieldcommonFieldSQL查詢加入Access Access VBA中的字段重命名字段

因此,如果查詢如下:

SELECT IIPM.*, UNIX.* INTO [UNIX_lob] FROM IIPM INNER JOIN UNIX ON IIPM.[appcode_0] = 
UNIX.[appcode_0]; 

然後appcode_0場是IIPMUNIX之間共同成爲新表UNIX_lob命名爲IIPM_appcode_0UNIX_appcode_o兩個字段時,我希望它仍然是一個單字段appcode_0

我已在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 
+1

將被預期進入VBA的行爲,因爲你不能有2列,名稱相同。但你的問題是什麼?爲什麼會發生?因爲字段名稱在表格之間重複,並且您正在選擇通配符的所有列。如何阻止它?不要選擇所有列。如何追加而不是加入?使用Union全部 – Matt

+0

我不知道這是預期的行爲,並認爲在編寫我的查詢時出錯。謝謝 - 在這種情況下,如果我重命名其中一列,那就足夠了。 – Paradox

+0

馬特說什麼。沒有任何真正的方法可以做到這一點,我可以想到,你將不得不實際列出你所有的領域。那麼,也許你可以遍歷字段集合並將它們全部寫入數組,但這聽起來像一場噩夢。 –

回答

1

寫我的上述評論後,我看到了你的其他問題,所以我想我會擴大我有點上面說的:

CREATE TABLE JoinTable (table1_key long null, table1_somecolumn text(50) null, table2_key long null, table2_somecolumn text(50) null); 

然後在做這件事,

INSERT INTO JoinTable (Table1_key, table1_somecolumn, table2_key, table2_somecolumn) 
SELECT t1.key, t1.somecolumn, t2.key, t2.somecolumn 
FROM Table1 t1 INNER JOIN Table2 t2 ON t1.key = t2.key 

這應該做你後(一個是什麼lbeit那毫無疑問你的查詢看起來有點混亂不止這些!)

希望這有助於