2012-07-09 56 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