从本地副本更新网络位置中的重复表

时间:2017-04-20 16:21:08

标签: sql vba ms-access

我尝试在Access 2010中创建更新查询,以便从用户的本地副本更新共享驱动器上的重复表。

Access程序本身使用通常的拆分前端/后端。

由于频繁掉线VPN,我们想出了一种方法:

  • 将最新版本的前端和后端副本下载到用户的本地驱动器
  • 然后跑出本地前端/后端(带有两个链接的)
  • 然后使用VBA更新本地和网络位置上的单个记录,除非网络驱动器不可用,然后将更新的数据转储到阵列中,以便在程序关闭时再次尝试。

我有两个相同的表(一个在本地,一个在网络上),我需要创建一个更新查询,以更新本地表中对网络上所做的任何更改,以便它可以存储在他们机器上的下一个用户的网络数据库。

UPDATE HiringMgrData As NetworkHiringMgrData IN '\\ServerName\FilePath\HREmails_be.accdb'
SET NetworkHiringMgrData.UserName  = HiringMgrData.UserName, 
   NetworkHiringMgrData.UserPhone = HiringMgrData.UserPhone, 
   NetworkHiringMgrData.UserEmail = HiringMgrData.UserEmail  
WHERE NetworkHiringMgrData.ID IN (SELECT ID FROM HiringMgrData)

当它到达SET语句时,这给了我一个错误,而点击它只是空白网络表中的字段。

我试图"欺骗"访问将网络数据库中的表作为NetworkHiringMgrData处理,同时保持表的名称在本地数据库HiringMgrData中,希望Access能够区分这两者。

实际上,本地和网络数据库都有一个名为HiringMgrData的表,其字段名称为ID,UserName,UserPhone和UserEmail。

我能够使用附加查询工作:

INSERT INTO HiringMgrData IN '\\ServerName\FilePath\HREmails_be.accdb'
SELECT HiringMgrData.*
FROM HiringMgrData;

只是将本地数据库中HiringMgrData表中的任何新记录添加到网络数据库中的HiringMgrData表中,但我无法更新现有记录。

2 个答案:

答案 0 :(得分:1)

尝试以下方法。我试图在我的MS Access数据库上做类似的事情,由于某些原因这对我有用,而不是使用IN'网络路径'

UPDATE [\\ServerName\FilePath\HREmails_be.accdb].HiringMgrData As NetworkHiringMgrData inner join HiringMgrData as LocalHiringMgrData on NetworkHiringMgrData.ID = LocalHiringMgrData.ID SET NetworkHiringMgrData.UserName = LocalHiringMgrData.UserName, NetworkHiringMgrData.UserPhone = LocalHiringMgrData.UserPhone, NetworkHiringMgrData.UserEmail = LocalHiringMgrData.UserEmail;

答案 1 :(得分:0)

我认为你的WHERE条款错了,应该是

WHERE NetworkHiringMgrData.ID = HiringMgrData.ID;

<小时/> 请注意,随着所有记录的更新,这可能会产生大量网络流量。也许您的应用程序可以管理isChanged标志并仅更新这些记录。