2015-04-24 47 views
0

正在處理SQL Server數據庫和MS Access之間的數據鏈接。現在有人正在手動計算來自SQL數據庫報告的數據,並將其輸入到Access中以在Access中運行其他報告。使用更新查詢的MS Access SQL錯誤

我已經創建了通過查詢傳遞給相關的信息拉入從SQL數據庫的Access表(所有的工作很好)

現在我需要更新數據現有的Access表從SQL檢索通過。出於各種原因,我嘗試了許多不同的查詢,所有這些查詢都在爲我而煩惱。這裏是最新的查詢的一個例子,它將使我得到我所需要的。這個作品,如果我設置一個沙盒中SQL Server和運行它MSSQL Management Studio中,但不會在訪問

UPDATE JT 
SET JT.ContractAmt = SBD.TotalSum 
FROM JobTable_TEST AS JT 
INNER JOIN (
      SELECT Sum(Main.amt) as TotalSum, Main.job 
      FROM Main 
      GROUP BY Main.job 
      ) AS SBD 
ON SBD.job = JT.JobNumber 

工作在訪問上方的查詢表達式生成以下錯誤「語法錯誤(缺少操作員)。


以下在使用SQL直通運行更新查詢試圖更新

我更新了我的查詢直接從直通SQL語句做到這一點的建議,並得到了FOLL欠款錯誤。

ODBC - 調用失敗。

[微軟] [SQL Server本機客戶端11.0] [SQL服務器]無效的對象名稱表名「。(#208)

這裏是通通過查詢我所用的樣子。

UPDATE AccessTable 
SET AccessTable.amt = SQLResult.Total 
FROM TableName AS AccessTable 
    INNER JOIN (SELECT SUM(SQLTableA.amt) as Total, SQLTableA.job 
       FROM SQLTableA 
       LEFT OUTER JOIN SQLTableB ON (SQLTableA.company = SQLTableB.company) 
              AND (SQLTableA.job = SQLTableB.job) 
       GROUP BY SQLTableA.job 
       ) AS SQLResult 
ON SQLResult.job = AccessTable.JobNum 

希望,更好地描述了我的桌子的位置以及如何更新我的需要發生,也許有人能說出這是怎麼錯的,或者如果它甚至會以這種方式工作。


任何建議,將不勝感激

+0

考慮使用Access pass-through查詢在服務器上執行該'UPDATE'語句。 – HansUp

+0

我喜歡這個想法,但似乎遇到了問題。當我修改此查詢以更新來自SQL Passthrough查詢的訪問表時,它無法識別訪問表。用查詢和錯誤更新問題。 – Nathan

+0

看來我誤解了你告訴我們的。我的意思是執行'UPDATE JT ...'作爲傳遞查詢,因爲它在那裏工作。我不明白Access表涉及到哪裏。抱歉。 – HansUp

回答

1

看來你的子查詢,別名爲SBD,缺少job_no列。因此你不能加入它。

+0

這只是我的錯字,表示歉意。我在帖子中更新了SQL – Nathan