基本的方法是簡單地使用鏈接表。
使用ODBC時,您不應該在這裏看到任何真正的區別。 ODBC是首選方法,微軟已經宣佈oleDB支持的結束(並且大約10年前,.net社區留下了oleDB和ADO)。
您可以將表單綁定到這些鏈接表並實現良好的性能。簡單的訣竅是減少和限制記錄。這種限制可以通過在啓動這些綁定表單時使用SIMPLE where子句來實現。
因此,如果您啓動一個綁定發票窗體並在標準打開窗體命令上提供where子句,那麼只會拉出一條記錄。如果你有一個綁定的子表單,那麼只有正確的記錄纔會從服務器上被取出。因此,在99%的案例中,使用oleDB或ADO在這裏沒有任何優勢。
因此,作爲一般的開發方法,您可以在大多數情況下使用綁定表單。
需要注意的是,對於某些連接和任何具有聚合查詢的任何事情,則希望使用鏈接表來訪問sql視圖。您也可以考慮使用傳遞來報告,但傳遞往往是更多的工作,並且鏈接視圖意味着您可以保留現有的VBA代碼,可能(希望)使用「where」子句打開這些報告並再次限制記錄拉下網絡管道。
而對於動態傳遞到執行服務器端的命令,我用這個代碼:
Dim qdfPass As DAO.QueryDef
Set qdfPass = CurrentDb.QueryDefs("MyPass")
qdfPass.SQL = "exec sp_myProc " & "p1"
qdfPass.Execute
如果你需要以上返回的記錄,然後只是去:
Dim qdfPass As DAO.QueryDef
Dim rstData As DAO.recordSet
Set qdfPass = CurrentDb.QueryDefs("MyPass")
qdfPass.SQL = "exec sp_myProc " & "p1"
set rstData = qdfPass.OpenRecordSet
所以你可以即時更改/修改上面的SQL,以便使用非常少的代碼進行傳遞查詢。在一天結束時,您可以實現一流的性能,並且只需對現有應用程序進行很少的編碼更改即可實現。
所以目前推薦的方法是使用DAO。請記住,對於sql server的oleDB(和ADO)的生命支持現在已經公佈了。看到這裏:
http://blogs.msdn.com/b/sqlnativeclient/archive/2011/08/29/microsoft-is-aligning-with-odbc-for-native-relational-data-access.aspx
感謝這個信息,我沒有考慮傳遞查詢。將實施這些想法並希望獲得性能提升。 – Corey