簡體   English   中英

MS Access應用程序脫機工作

[英]MS Access Application Work offline

我有一個通過鏈接表鏈接到SQL Server(2012)的MS Access(2010)應用程序。 有什么方法可以讓用戶脫機工作並在連接后同步到服務器?

提前致謝

在我看來,沒有簡單的方法可以做到這一點。

通過設計,我會將SQL Server的相關內容鏡像到本地訪問數據庫,並使訪問程序可以與此數據庫一起工作。

但是您需要找到一種方法來將脫機數據與SQL Server同步。 那是棘手的部分,它在很大程度上取決於應用程序設計的目的。

當然,對於Access from SQL中的只讀數據,只需有一個宏即可將SQL表的副本拉到用戶運行的Access數據庫中,以在離線之前刷新其副本。

如果有多個用戶使用同一數據,則將更改同步回SQL Server變得更加復雜。 當同一記錄有多個更改時,誰的“數據”優先?

如果您的用戶僅添加數據,則可以設計一個保存表來保存新記錄,並讓它們啟動一個宏以將這些插入內容推入SQL表,並在它們插入時獲得SQL表的新副本。 但是,如上所述,如果他們正在編輯記錄並且有多個用戶這樣做,那么很容易導致數據丟失和數據損壞。

實現此方法的方法是將表鏈接到2個DB上的表:SQL Server和本地副本Access DB文件。

  1. 您將日期從遠程復制到本地數據庫
  2. 讓用戶處理本地副本
  3. 將數據同步回遠程數據庫

如果您使用相同的名稱保留本地表,並在指向遠程表名稱的鏈接(“ Remote”或“ rmt”)中添加一些前綴,則可以保持大多數邏輯:您仍在處理相同的表,只是鏈接到其他表位置。 您的主要問題仍然是同步 您需要考慮一種方法,具體取決於該系統中的數據流。
在這種情況下,一般的同步代碼為:

For Each tdf In CurrentDb.TableDefs  
    If Left (tdf.name, 3) = "rmt" then   
        CurrentDB.Execuet "DELETE FROM " & tdf.name 
        CurrentDB.Execuet "INSERT INTO " & tdf.name & " SELECT * FROM " & Mid (tdf.name, 4)
    End If
Next tdf

此代碼從遠程數據庫刪除所有數據,而是從本地數據庫插入數據。 查看這是否是您需要的同步方法,或者應該修改代碼以適合您的需求。 向每個表中的每個記錄添加LastUpdate字段(並在每次數據修改時對其進行更新)可以支持良好的同步決策:將哪些記錄刪除 ,將哪些記錄插入 ,並在上述語句中添加適當的WHERE子句。
您還可以將每個表的常規UPDATE SQL 假定主鍵命名為表名,並帶有“ ID”前綴

Dim strSQL As String, srsbl As String, PK As String
Dim tdf As DAO.TableDef, fld As DAO.Field
For Each tdf In CurrentDb.TableDefs  
    if Left (tdf.name, 3) = "rmt" then  
        srsTbl =  Mid (tdf.name, 4) 
        PK = "ID" & srsTbl 
        strSQL = "UPDATE " & tdf.name & " Inner Join " & srsTbl & " ON " &  tdf.name & "." & PK & " = " & srsTbl & "." & PK & " SET "
        For Each fld in tdf.Fields
            if fld.Name <> PK then
                strSQL = strSQL & tdf.name & "." & fld.Name & " = " & srsTbl & "." & fld.Name & ", "                    
            End If
        Next 
        ' Remove Last comma:
        strSQL = Left (strSQL, Len(strSQL) - Len(","))
        ' strSQL = strSQL & " WHERE "...
    End If
Next tdf

這是技術部分。 這里的主要問題是同步方法。 搜索數據庫並發控制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM