2012-07-09 125 views
3

由於我們的基礎設施,我有一個有點獨特的問題。我有兩個離線平板電腦正在進行調查並輸入信息在Access數據庫。這些平板電腦擁有自己的數據庫前端和後端副本。從離線數據庫添加/更新到中央數據庫 - 訪問

我需要在每天結束時用兩個平板電腦數據庫中的值更新後端(在辦公室計算機上)的主副本。然後將該主數據庫上傳到每個平板電腦,替換它們的不完整版本,然後在第二天離開。

我從來沒有做過這種合併之前,不知道從哪裏開始。基本上,我需要一個查詢,其將:

  • 刪除當前值主DB
  • 從tablet1添加值,合併的tablet2值到主數據庫

我可以刪除主數據庫中的當前值,因爲平板電腦將包含前幾天的值(因爲它們有時需要引用等)。基本上,平板電腦將始終包含entire database + today's survey。這僅僅是+ today's survey對於每個平板電腦都是不同的。

可以嗎?我如何保持ID字段,因爲有使用KeyIDs的關係?

我需要MERGE,但沒有找到任何文檔,如果它在MS Access中工作... MS似乎玩標準,但他們請。或者,也許MSA2010只是沒有更新,以支持合併?

+0

對不起,我認爲MSSQL是Jet的語法。我可能會誤解。它適用於標準Access Jet數據庫,在Access中使用VBA/SQL語法。我將編輯我的問題來消除歧義。 – StuckAtWork 2012-07-09 15:16:09

+1

我讀過Access 2010支持將SharePoint作爲數據源的脫機功能。如果您可以將SharePoint替換爲「主數據庫」,那麼內置的離線/在線&同步功能可能會簡化這種情況。 http://office.microsoft.com/en-us/sharepoint-foundation-help/synchronize-a-sharepoint-2010-list-with-access-2010-HA101854203.aspx – HansUp 2012-07-09 15:17:41

+0

我希望我早點知道。這將是最好的方式去看它的外觀。儘管我現在已經找到了解決方法,所以我認爲(因爲它是一種臨時數據庫,由2個人使用約8個月),我將省去將所有事情轉移到SharePoint的麻煩。絕對是一個好主意。 – StuckAtWork 2012-07-09 15:20:19

回答

1

我發現了一種解決方法,它適用於我作爲一個bandaid解決方案。我先清空現有的主表。然後我使用:

SELECT * FROM myTable IN "LocationToTablet1/backend_tablet1.mdb" 
UNION 
SELECT * FROM myTable IN "LocationToTablet2/backend_tablet2.mdb" 

並命名查詢「myQuery」。然後

INSERT INTO myTable IN "LocationToOffice/master_backend.mdb" 
SELECT * FROM [myQuery] 

然而,對於具有相同問題的人,與SharePoint集成的HansUp的解決方案似乎是一個好主意(見問題的評論)。它不需要最終用戶的干預,但我需要在平板電腦返回辦公室時手動調用這些查詢。

+0

它的工作原理如下:假設在第五天,有100行數據。在第六天,tablet1增加了另外4行,而平板電腦2增加了另外7行。在第六天結束時,總共有100 + 4 + 7行。以上操作將從主數據庫中刪除100行,然後從第二臺平板電腦的第一臺UNION(不是UNION ALL)100 + 7中添加100 + 4,以在主數據庫中創建111行。然後我刪除這兩個平板電腦上的數據庫,然後重新上傳整個事情。它確保了tablet1無法做到Tablet2已經完成的操作(正確的鍵/關係限制了兩次相同的操作) – StuckAtWork 2012-07-09 18:02:33