2013-10-19 69 views
0

我的一位經理創建了一個Access數據庫,並正在進行一些數據分析 - 如果情況如何。根據不同的條件,他在Access中生成報告。將帶有光標的t-SQL查詢轉換爲Microsoft Access

他讓我做一些數據操作,所以我將數據庫導入到SQL中,並用一個光標寫了一個例程,它將執行他想要的操作。然後我將結果導回到Access。在使用光標獲得任何熱量之前,這應該是一次性處理,所以這是我完成它的最快方式。如你所料,現在他希望我一直運行它,並要求將我的例程轉換爲Access,以便他可以運行它。在你告訴我只使用SQL之前,他對Access非常感興趣,並且經常在旅行中脫機。

所以,我的問題是:是否有一種「簡單」的方式來將光標轉換爲Access的T-SQL查詢?自從我與Access合作已經很長時間了,但我懷疑它必須用VBA重寫。我在想,也許另一個解決方案是從Access調用查詢並在SQL中運行它,但我不知道是否可以完成,或者它是否適用於我的案例,因爲他正在脫機(也許安裝SQL Express在他的筆記本電腦?)

任何意見,將不勝感激。

謝謝, 亞歷克斯

+0

簡單的方法?轉換TSQL不使用遊標! –

+0

您的偏好或老闆的偏好是否繼續訪問Access應用程序的SQL Server依賴項? – HansUp

+0

如果需要針對Access數據庫中的實時數據運行,保留T-SQL中的過程可能會出現問題。 *假設*是一種使用OLEDB將Access數據庫作爲「鏈接服務器」附加到SQL Server中的方式,但我已經嘗試過多次設置它,並且我從未能夠將其實際用於* work *。 :( –

回答

1

這是我周圍如何到達:

1.Downloaded and install SQL server express in the user's machine. 
2.uploaded Access database structure and data to the local SQL. 
3.created the stored procedure that I wanted to run in the local SQL server. 
4.back in Access, deleted all the tables and recreated them as linked tables to SQL 
5.Create a form in Access with a big button that executes the stored procedure 
    `Private Sub Command0_Click() 
    Dim qdf As DAO.QueryDef 
    Set qdf = CurrentDb.CreateQueryDef("") 
    qdf.Connect = CurrentDb.TableDefs("ANY TABLE").Connect 
    qdf.SQL = "EXEC dbo.[stored procedure name]" 
    qdf.ReturnsRecords = False 
    qdf.Execute 
    Set qdf = Nothing` 

存儲過程截斷一個重新填充的一個表。所以在執行它之後,我可以在Access中打開表格並查看更改。我的經理可以繼續使用Access,並在後端使用SQL服務器。美好的結局! :)