怎样找出新表比旧表增加和减少的记录.(100分)

  • 主题发起人 主题发起人 hejiesi
  • 开始时间 开始时间
H

hejiesi

Unregistered / Unconfirmed
GUEST, unregistred user!
有新旧两个Access的MDB文件, 有什么好的办法能找出新表比旧表增加和减少的记录.
 
修改前备份
 
//找出B中不含A 的记录
select from a.主键 where a.主键 not in(select from b.主键)
//同理
select from b.主键 where b.主键 not in(select from a.主键)
 
to 王公子:
你的方法是对的,
但现在有两个mdb文件, 每个文件里面有多个表, 我要找出每个表中增加和减少的记录.
具体怎样操作呢?
 
当然是有循环了用这个方法可以ADOConnection1.GetTableNames,具体就自己研究一下吧
如不行,再说吧
 
写个小程序
 
其实有多个表这个不是问题,
问题是在两个不同的Query之间怎样使用SQL语句.
就好像我现在就是用两个Query分别打开那两个mdb文件, 但不知道怎样使用SQL语句.
 
那就导入到SQL SERVER中去吧,那样就可以对多个库操作
其实对MDB好象也可以,你可查一下以前的贴子
 
导入到SQL SERVER 太麻烦了.
其实用逐个比较的方法是可以的, 但我想知道有没有一些比较好的方法.
 
在表名前加数据库名 如 databasename.tablename
 
to dz2050:
这样可以吗? 为什么我不行的, 你是怎样做的?
 
可以,access支持 如:select * from datebase.tablename
 
用TQuery具体怎样操作啊, 请指教一下啦, 如果那些不是Access数据库又怎样做(比如是两个不同目录下的
有相同结构的一些数据库文件)?
 
判断一下谁的记录更多,
然后把它们的数据集来一个minus。
就可以得到差的数据集.
 
to dedema:
能不能详细一点, 你说的来一个minus应该是通过SQL语句吧. 其实如果能使用SQL语句这个
问题根本不是一个问题, 关键是怎样在两个Query之间怎样用SQL语句.
 
1.
当然是有循环了用这个方法可以ADOConnection1.GetTableNames,具体就自己研究一下吧
如不行,再说吧

2.
//找出B中不含A 的记录
select from a.主键 where a.主键 not in(select from b.主键)
//同理
select from b.主键 where b.主键 not in(select from a.主键)

----王公子的方法就能解决你的问题呀.
 
to DEN :
其实有多个表这个不是问题,
问题是在两个不同的Query之间怎样使用SQL语句.
就好像我现在就是用两个Query分别打开那两个mdb文件, 但不知道怎样使用SQL语句.
 
select * from [c:/aa].aa as a
where not exist (select * from [c:/bb].aa as b where a.id=b.id)
 
to ugvanxk:

Query.Close;
Query.SQL.Clear;
Query.SQL.Add('select * from [E:/Project].Source as a where not exist (select * from [E:/Project].Target as b where a.id=b.id)');
Query.ExecSQL;
Query.Open;

Error:
Field"E:/Project].Source" is an unknown type

或者
Invalid use of keyword.
Token: [E?
Line Number 1
 
例:
C:/temp下有A.mdb和B.mdb,分别存在A,B表,结构相同,主键为ID,Adoconnection连接到A.mdb上
Sql语句如下,用Adoquery执行

Insert into A Select * from B in "c:/tmep/B.mdb" Where id not in (Select id from A)

 

Similar threads

S
回复
0
查看
835
SUNSTONE的Delphi笔记
S
S
回复
0
查看
765
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部