在Access中,是否可以从前端和前端的类似表中选择字段。不同驱动器上的后端副本?

时间:2014-03-06 13:56:39

标签: ms-access-2010 sql

我有一个拆分的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));

有人有建议吗?我这太复杂了吗?

1 个答案:

答案 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一起发布的内容,你应该能够很快找到答案。