2017-06-29 147 views
0

我對MS Access和SQL相對較新。MS Access SQL語句追加

我有一個訪問數據庫中的查詢來追加一個表到另一個,由一個特定的列升序,然後我用它來添加列以分配一個唯一的標識符的目的。

查詢本身在訪問中運行良好,但是,我想將它寫入一個窗體的VBA代碼中,以便在單擊按鈕時執行操作。

訪問中的SQL視圖給了我下面的代碼,但是當我將它寫入我的代碼中時,它指出操作符丟失,任何人都可以提出建議?

代碼:

DoCmd.RunSQL ("INSERT INTO tblImport (CustomerAccount, OrderReference, OrderDate, DueDate, CustomerRef," & _ 
    "StockNo, OrderQuantity, AddressName, Add1, Add2, Add3, Town, County, PostCode, Country, ServiceLine)" & _ 
    "SELECT tblImport2.CustomerAccount, tblImport2.OrderReference, tblImport2.OrderDate, tblImport2.DueDate," & _ 
    "tblImport2.CustomerRef, tblImport2.StockNo, tblImport2.OrderQuantity, tblImport2.AddressName, tblImport2.Add1," & _ 
    "tblImport2.Add2, tblImport2.Add3, tblImport2.Town, tblImport2.County, tblImport2.PostCode, tblImport2.Country," & _ 
    "tblImport2.ServiceLine" & _ 
    "FROM tblImport2" & _ 
    "ORDER BY tblImport2.OrderReference") 
+0

你能告訴我們你有錯誤的vba代碼嗎? 'SQL'顯示看起來不錯,但是在你如何將它轉換爲'VBA'的過程中可能存在錯誤。 – Dave

+0

這有點太長了:) – Tim

+0

根據你的語法錯誤,我有一次快速猜測,但即使你只是發佈'vba'語句來設置你的'SQL',它應該足以確定問題(假設我的猜測是不正確的) – Dave

回答

1

保存查詢。然後你就可以從代碼中調用它:

CurrentDb.QueryDefs("NameOfYourAppendQuery").Execute 

或沒有查詢:

Dim Sql As String 

Sql = "<Your SQL string>" 
Debug.Print Sql  ' Check SQL. 
CurrentDb.Execute Sql 
+0

謝謝古斯塔夫。我知道如何從表單代碼運行查詢,我只是希望將查詢寫入代碼。我有一些事情正在使用這種形式,所以我想把db中的查詢數量降到最低,這樣我就不會失去跟什麼鏈接的信息。 – Tim

+0

哦。我已經添加了答案。 – Gustav

+0

謝謝Gustav,我試過了,它的失敗方式和我原來的代碼一樣。查詢表達式'tblImport2.ServiceLine來自tblImport2 Order by tblimport2.orderReference'中的語法錯誤(缺少運算符)。看起來像我缺少一個逗號或分號或其他東西,但我不知道在哪裏 – Tim

1

您是否知道,在VBA指定一個多行字符串(如您的查詢是這裏),你需要加入像這樣的線?否則VBA不會知道它應該是一個單一的字符串。

mySql = "INSERT INTO tblImport (CustomerAccount, OrderReference, OrderDate, DueDate, CustomerRef, StockNo, OrderQuantity, AddressName, Add1, Add2, Add3, Town, County, PostCode, Country, ServiceLine) " & _ 
"SELECT tblImport2.CustomerAccount, tblImport2.OrderReference, tblImport2.OrderDate, tblImport2.DueDate, tblImport2.CustomerRef, tblImport2.StockNo, tblImport2.OrderQuantity, tblImport2.AddressName, tblImport2.Add1, tblImport2.Add2, tblImport2.Add3, tblImport2.Town, tblImport2.County, tblImport2.PostCode, tblImport2.Country, " & _ 
"tblImport2.ServiceLine " & _ 
"FROM tblImport2 " & _ 
"ORDER BY tblImport2.OrderReference; " 
+0

這是正確的戴夫,我原來的代碼是DoCmd.RunSQL等等所有行結束「&_和以下行開始」。當我在訪問中運行查詢時,執行完美。沒有辦法在這裏添加附件嗎? – Tim

+0

不,但您可以將語句本身複製並粘貼到問題的編輯中。語法錯誤意味着某事與陳述不符,所以看到陳述是必要的,以幫助解決它。 – Dave

+0

完美。試過在這裏彈出它,但是太長了200個奇怪的字符:) – Tim