有两个ACCESS数据库A和B,A和B数据库结构完全相同,只是数据不同,ADOConnection1连接到A, ADOQuery1的connection:=ADOConnection1
我需要完成以下工作:
查询 B中的t1表比A中的t1表增加的记录
我将以下的语句作为ADOQuery1的SQL:
'select a.proc_code‘
+' from t1 a'
+' where a.proc_code not in'
+' (select b.proc_code'
+' from openrowset(''Microsoft.Jet.OLEDB.4.0'','''+edt_compare.text+''';''Admin'';'''',t1) b)';
其中edt_compare.text存有数据库B的路径,别的的模块用ADOConnection2(对应的数据库是B)。运行时显示SQL语句有语法错误,而且运行我的软件时常报错:找不到可安装的ISAM。难道这种查询方法不能在此处用?
请朋友们帮我看一下。
我需要完成以下工作:
查询 B中的t1表比A中的t1表增加的记录
我将以下的语句作为ADOQuery1的SQL:
'select a.proc_code‘
+' from t1 a'
+' where a.proc_code not in'
+' (select b.proc_code'
+' from openrowset(''Microsoft.Jet.OLEDB.4.0'','''+edt_compare.text+''';''Admin'';'''',t1) b)';
其中edt_compare.text存有数据库B的路径,别的的模块用ADOConnection2(对应的数据库是B)。运行时显示SQL语句有语法错误,而且运行我的软件时常报错:找不到可安装的ISAM。难道这种查询方法不能在此处用?
请朋友们帮我看一下。
直接SELECT *
FROM [e:\db\db.mdb].t1就行能得到表t1的数据。
to DetugXP: 如果db.mdb有密码的话就不好办了。
我现在用的方法是:
手工去掉B的加密口令(没办法啊),将要比较的表插入A(改名),在A中对两表比较,然后再将插入的表删除。
我想ycayk、lausy说的有道理。
FROM [;DATABASE=abc.mdb;pwd=密码].t1;这样不行?
with ADOQuery1 do
begin
close;
sql.clear;
sql.Text:='select * from [Database=''e:\aaa\数据比较\新数据库 \cerdb.mdb'';pwd=''Peter_Zhang''].t_lab';
open;
end;
报错:找不到可安装的ISAM。
sql.Text:='select * from [;Database=''e:\aaa\数据比较\新数据库 \cerdb.mdb'';pwd=''Peter_Zhang''].t_lab';