2011-09-27 71 views
7

我有一些訪問表與許多字段。我已將每個訪問表遷移到6個或7個SQL Server表。我正在使用SQL Server 2008.現在我想使用Access作爲前端,以便我可以在訪問中輸入數據,但它將存儲在SQL Server中。我知道我必須建立一個ODBC連接。但我不確定如何創建訪問表單以將其用作前端。我很抱歉,如果這是一個基本的問題...訪問作爲前端和sql服務器作爲後端

回答

9

你可能要開始與一個空的Access數據庫(因爲表結構和任何現有的窗體和報表將不匹配您在SQL Server中創建的)。

第一步是建立到您的SQL Server數據庫的ODBC連接。然後,您將「連接」SQL Server中的表到您的Access數據庫。

現在,你有你的SQL Server鏈接的所有表的Access數據庫。這些表仍然「活着」在SQL Server中,並且在Access中編輯它們時,數據將存儲在SQL Server中。

然後,您可以建立訪問形式和使用這些表,就好像表是本地到Access報告。

+0

爲什麼你需要一個DSN或一個ADP ODBC連接?通過SQLOLEDB的SQL Server連接是內置的。 DSN也是一個部署開銷。自Access 2000/2003以來,ADP一直存在。 – gbn

+0

取決於用戶的喜好。 ADP是另一個有效的解決方案。我的經驗是遷移到鏈接表(對於這個用戶來說不那麼重要,如果所有的表結構都是新的)。 –

+0

@LarryLustig我已經做了ODBC連接到sql服務器,進入'管理工具 - >數據源 - >系統DSN->添加了我想用作前端的sql服務器和數據庫名稱'現在我也鏈接了SQL Server通過使用'sp_addlinkedserver'connect','Access 2007','Microsoft.ACE.OLEDB.12.0', 'C:\ connect.accdb',但是來自sql server的表未顯示在空訪問數據庫中..我在這裏錯了嗎? – alex

0

那麼你可以創建一個ODBC連接。您也可以創建一個ADODB連接。如果你的目標是更新或修改一個SQL數據庫,那麼這兩個連接都會起作用。

現在,我想你必須熟悉相應的對象。這些應該是表,查詢,命令等等,例如,它允許你從SQL查詢中構建記錄集......一旦你明白了這一點,你就可以例如將一個記錄集分配給一個表單通過Set myForm.recordset = myRecordset.open ...方法。

1

最通用的方法是使用ODBC鏈接到您的SQL Server表和視圖。該方法使您能夠靈活地鏈接到其他ODBC數據源,其他Jet/ACE數據庫文件中的表格,在數據庫本地創建Jet/ACE表格,鏈接到Excel電子表格等等。您可以合併各種數據源。

如果選擇ADP,你將被限制在OLE DB連接到一個SQL Server實例。你將基本上鎖定到SQL Server。如果不進行重大的重新開發工作,您將無法將應用程序切換到不同的客戶端 - 服務器數據庫。

關於與ODBC部署開銷,雖然你可能會發現它方便的開發過程中使用DSN,應該在部署之前,您的ODBC鏈接轉換爲DSN的連接。這樣你的用戶不會每個人都需要DSN。見道格·斯蒂爾的頁面:Using DSN-Less Connections

+0

我已經創建了一個空的訪問數據庫。我已經做了ODBC連接到sql服務器進入'管理工具 - >數據源 - >系統DSN->添加了我想用作前端的sql服務器和數據庫的名稱現在我也鏈接到sql服務器使用'sp_addlinkedserver'connect','Access 2007','Microsoft.ACE.OLEDB.12.0','C:\ connect.accdb',但是來自sql server的表沒有出現在空的訪問數據庫中。在哪裏我我錯了嗎? – alex

+0

當您創建DSN時,請勿添加任何有關Access的信息。您的DSN將描述連接到SQL Server的屬性。它不是一個Access特定的東西,但應該可以被任何可以使用ODBC連接的應用程序使用。 – HansUp

+0

謝謝我明白了,我在連接表中失敗了。現在我已經給出了DSN的正確路徑名稱及其工作方式!你能否建議我最好長期用作前端訪問還是dotnet中的接口? – alex