希望合并不同Access数据库(db1,db2,db3)中的表T;
例如db1有记录A,B;db2有记录B,C;db3有记录C,D;
其中有重复记录,db2与db3循环逐条插入db1中;
因此,先做了select from db1不存在,然后才Insert into db1;
报错情况:db2写入db1没有问题(此时,db1中应有记录A,B,C);
然而,select from db1 where =C 时,没有找到,导致Insert 重复记录出错。
使用TADOQuery,非事务处理模式;
并且,如果在ExecSQL后,sleep(1000),则没有错误。
请问,是否和delphi的数据访问有关?
上面写的比较乱,不好意思

解决方案 »

  1.   

    那就一次性写进去好了,用union连接表
    inset into db1
    from
      (select * from db2
       union
       select * from db3
      ) t1
    where t1.XX not in 
      (select XX from db1)
      

  2.   

    不好意思,楼上的,可能我表达的不清楚
    db1,db2,db3是不同的mdb文件,只不过表T的表结构结构一样
      

  3.   

    //以下语句可以实现楼主的功能(环境:delphi7+ADO+JET4.0+access2000,ADOCommand1连向db1),,执行后会在db1中产生一个newT表,包含了db1、db2、db3三个数据库的T表内容,无重复.
    ADOCommand1.CommandText:='select *  into newT from (select * from T union select * from T in "db2路径+db2.mdb" union select * from T in "db3路径+db3.mdb")';
    ADOCommand1.Execute;
      

  4.   

    wizardqi(男巫) 
    不好意思,没时间上网结帖,已经弄好了,不过可以请问一下访问外表的时候怎么加上用户名密码呢?