我有一个拆分的Access 2010数据库。用户在他们的笔记本电脑上有这个数据库的副本,并且有一个主副本驻留在I:驱动器服务器上。存在两个表用于所有副本的输入: tblMedData 和 tblMyMedData 。用户可以执行同步,将tblMyMedData数据从其笔记本电脑移动到I:驱动器服务器上的tblMedData表中。然后将tblMedData复制回笔记本电脑上的tblMedData表,这样他们就可以将最新数据存储在笔记本电脑上。
我们面临的问题:如果在服务器上的tblMedData表中进行了更改,则在同步期间会覆盖此更改。在同步期间,我尝试使用select查询来检查笔记本电脑tblMedData表和服务器tblMedData表中是否存在的药物,以及这些记录之间是否有任何差异,但我无法弄清楚如何执行此操作?这是我到目前为止所做的:
SELECT tblMedData.* AS tblLaptopMeds, tblMedData.* AS tblServerMeds, tblMedData.Ratio,
tblMedData.Duration, tblMedData.Withdrawal, tblMedData.WaterOrInject, tblMedData.Deleted
FROM [C:\FolderName\DB.accdb].tblMedData AS tblLaptopMeds INNER JOIN
[I:\FolderName\Folder\DB_be.accdb].tblMedData AS tblServerMeds ON tblLaptopMeds.InvNo =
tblServerMeds.InvNo
WHERE (((tblLaptopMeds.Ratio)<>tblServerMeds!Ratio)) Or (((tblLaptopMeds.Duration)
<>tblServerMeds!Duration)) Or (((tblLaptopMeds.Withdrawal)<>tblServerMeds!Withdrawal))
Or (((tblLaptopMeds.WaterOrInject)<>tblServerMeds!WaterOrInject)) Or
(((tblLaptopMeds.Deleted)<>tblServerMeds!Deleted)) Or (((tblLaptopMeds.Ratio)
<>tblServerMeds!Ratio)) Or (((tblLaptopMeds.Duration)<>tblServerMeds!Duration)) Or
(((tblLaptopMeds.Withdrawal)<>tblServerMeds!Withdrawal)) Or
(((tblLaptopMeds.WaterOrInject)<>tblServerMeds!WaterOrInject)) Or
(((tblLaptopMeds.Deleted)<>tblServerMeds!Deleted)) OR
(((tblLaptopMeds.ChangedBy)<>tblServerMeds!ChangedBy));
有人有建议吗?我这太复杂了吗?
答案 0 :(得分:0)
以下是搜索缺失值的片段:
select * from YourTable a
where a.YourIDField not in
(select b.YourIDFieldfrom YourTable b
where a.YourIDField= b.YourIDField)
我不确定Not In
是否可以在Access中使用(特别是如果你正在检查多个字段),所以如果没有,请尝试这样做:
select * from YourTable a
where a.YourIDField not exists
(select b.YourIDFieldfrom YourTable b
where a.YourIDField= b.Your
See this post for similar answer
我想如果你看一下我和Selecting from 2 databases on different servers一起发布的内容,你应该能够很快找到答案。