我尝试在Access 2010中创建更新查询,以便从用户的本地副本更新共享驱动器上的重复表。
Access程序本身使用通常的拆分前端/后端。
由于频繁掉线VPN,我们想出了一种方法:
我有两个相同的表(一个在本地,一个在网络上),我需要创建一个更新查询,以更新本地表中对网络上所做的任何更改,以便它可以存储在他们机器上的下一个用户的网络数据库。
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表中,但我无法更新现有记录。
答案 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
标志并仅更新这些记录。