有两个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。难道这种查询方法不能在此处用?
请朋友们帮我看一下。

解决方案 »

  1.   

    放置两个ADOConnection,同时取得数据后比较不行吗?
      

  2.   

    openrowset  Access有这东西吗?如果是Access
    直接SELECT *
    FROM [e:\db\db.mdb].t1就行能得到表t1的数据。
      

  3.   

    to lausy:   可以,我不知道效率如何。
    to DetugXP: 如果db.mdb有密码的话就不好办了。
    我现在用的方法是:
      手工去掉B的加密口令(没办法啊),将要比较的表插入A(改名),在A中对两表比较,然后再将插入的表删除。
     我想ycayk、lausy说的有道理。
      

  4.   

    还手工去掉B的加密口令。SELECT *
    FROM [;DATABASE=abc.mdb;pwd=密码].t1;这样不行?
      

  5.   

    to DebugXP: 我试了一下,ADOQuery1连接到旧数据库,
       with ADOQuery1 do
       begin
        close;
        sql.clear;
        sql.Text:='select * from [Database=''e:\aaa\数据比较\新数据库  \cerdb.mdb'';pwd=''Peter_Zhang''].t_lab';
        open;
       end;
    报错:找不到可安装的ISAM。
      

  6.   

    sql.Text:='select * from [Database='';e:\aaa\数据比较\新数据库  \cerdb.mdb'';pwd=''Peter_Zhang''].t_lab';;不能省略
      

  7.   

    不好意思,更正
    sql.Text:='select * from [;Database=''e:\aaa\数据比较\新数据库  \cerdb.mdb'';pwd=''Peter_Zhang''].t_lab';