2012-09-11 103 views
1

每月,我需要從我們的SQL Server業務應用程序獲取「新」數據到包含所有「管理報告」的Access 2010數據庫中。 Access數據庫有一個「登臺表」,用於包含報表所基於的原始數據。將SQL Server查詢結果複製到Access 2010表中

我沒有訪問經驗,但我建議我們:(......此位是很容易)

  1. 我們的SQL Server返回所需的原始數據上編寫一個查詢(?存儲過程)
  2. 在每個月的月底,從Access 2010中調用SQL Server存儲過程(...單擊按鈕?)
  3. 將存儲的proc的結果保存到Access中的登臺表中。

但是我發現它比我想象的要難。我認爲我可以在代碼隱藏中使用ADODB,在循環遍歷記錄集中的行,然後逐個設置列值時,可以得到一些難看的東西。但是,必須有一個更好的辦法:)

  • 我應該如何去從Access 2010中獲取SQL Server數據? (ADODB?DAO?QueryDesigner?其他?)

  • 是否有一個 「插入記錄到表格」(或類似),我可以利用的機制?

回答

1

將相關的sql server表或視圖鏈接到MS Access。使用MS Access語法對鏈接表運行查詢並更新登臺表。

也可以使用SQL Server的連接字符串更新MS Access表。

SELECT * 
INTO newtable 
FROM [odbc;filedsn=Z:\DSN\test.dsn].table1 

從SQL Server端工作,您可以使用MS Access作爲鏈接服務器或運行查詢並從那裏更新。

INSERT INTO 
OPENDATASOURCE(
    'Microsoft.ACE.OLEDB.12.0', 'Data Source=z:\docs\test.accdb')...[table1] 
    (atext) 
SELECT atext FROM table1 WHERE id=2 
+0

「鏈接相關的SQL Server表或視圖」:我的SQL Server的數據是一個長期的查詢需要日期範圍的輸入參數。我仍然可以使用這種機制嗎?或者它只能在單個表或視圖上工作。 – Merenzo

+0

「從SQL Server端工作」:很好的優雅的解決方案...雖然在我的情況下,我們想使用一個可以存在於本地PC桌面的Access數據庫。即從SQL Server端不可能完成,但通過Access訪問將是我們理想的解決方案。 – Merenzo

+0

在這種情況下,請從長查詢中在sql server中創建一個表或在MS Access中運行長查詢。 – Fionnuala