2008-10-17 53 views
2

我們有一個Access數據庫,其中有一組本地表和輸入表單等用戶維護其數據。訪問SQL副本

我們還有一個SQL數據庫,它有相同的表格,用於在網絡搜索表單中顯示數據。

什麼是最好的方式允許用戶更新他對SQL數據庫的更改,同時保持工作副本本地化,以便他可以脫機工作,然後在他對新版本數據感到滿意時推送文件?

我的第一個想法是將SQL表添加爲鏈接表,然後我可以截斷(訪問就是這樣)或刪除每個表中的內容,然後爲每個表執行插入操作。

我可以打電話從訪問SP上的SQL截斷表,因爲我有問題,運行刪除

我確實想它弄下來給用戶運行宏/ SQL調用,可重複等。

感謝您的幫助

回答

1

您應該能夠使用ADODB.Command對象執行存儲過程。

編輯:

這個例子是從Using ADO in VB and Access

Sub ADO_COMMAND_CONNECTION_TEST() 
Dim cmd As New ADODB.Command 
Dim rs As ADODB.Recordset 
Dim strConn As String 

    cmd.ActiveConnection = " DRIVER={SQL Server};" & _ 
     "Server=UKDUDE;DATABASE=pubs;UID=sa;PWD=;" 
    cmd.CommandText = "byroyalty" 
    cmd.CommandType = adCmdStoredProc 
    cmd.Parameters.Refresh 
    cmd.Parameters(1).Value = 25 

    Set rs = cmd.Execute 

' Recordset now has authors with 25% royalty..... 

End Sub 
+0

你有一個這樣的例子是在Access – Pbearne 2008-10-17 11:40:43

1

複製永遠不要使用的MS Access鏈接表與MS SQL。

它們不僅速度慢,而且Access可以在引用的表上保留開放的客戶端寫入遊標。這是一個非常愚蠢的方式來創建大量的死鎖,但Access無論如何都會這樣做。

當他們添加Access Data Projects時,Microsoft顯着改進了這一點 - 在這些整個後端被替換爲SQL並且Access只提供表單。

如果您希望用戶操作直接寫回,那麼ADP是迄今爲止最好的方法。

如果您想要在Access數據庫中本地緩存更改,然後將它們發送到SQL,則會出現更爲複雜的問題。您需要更具體地瞭解您希望如何實現同步 - 例如,如果兩個用戶進行離線更改,並且他們在連接時獲得了更多勝利?

+0

單用戶無需同步只需轉儲當前的SQL數據並從訪問文件中推送新數據(或者只是推動更改) – Pbearne 2008-10-17 11:39:40

1

我不明白你爲什麼不直接鏈接到SQL Server數據並直接使用它,而不是去維護它的第二個副本。這是標準的Access方式來做事 - 爲什麼你要抵制你使用的工具的自然功能?