如题,有三个独立的Access数据库,数据结构相同,内容不同,如字段均为:
A.mdb ,结构:ID,Name,sex
B.mdb ,结构:ID,Name,sex
C.mdb ,结构:ID,Name,sex
问题如下:
1.====
A、B、C的内容不同,现要从B中找出A中已有的重复数据,并将找出的相同数据保存至C.mdb,用VB如何实现;
2、====
将1步骤找出的重复数据从B中删除;
3、====
将删除重复数据后的B.mdb追加至A.MDB
以上如何实现,VB6.0,谢谢!
   急!
                             
请Email至:(因上网不便)
 [email protected]

解决方案 »

  1.   

    SQL不熟,但是我知道有方法可以直接找出重复项.如果不用SQL写,那倒是简单,全部读到2个自定义数据结构数组中循环判断就是了.
    不过效率就不谈了
      

  2.   

    在 B.mdb 中新建对 A.mdb 和 C.mdb 的链接表,假定表名为 tableA、tableCInsert into tableC
    SELECT id,name,sex
    from tableB
    where exists (select * from tableA where tableA.id = tableB.id)
      

  3.   

    假定你的三个库表名都是 TDim cn As ADODB.ConnectionSet cn = New ADODB.Connection
    cn.CursorLocation = adUseClientcn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "/B.mdb"'先将库 A 的表导入 B,以便查询
    cn.Execute "select * into tmp from t in '" & App.Path & "\A.mdb'"cn.Execute "insert into t in '" & App.Path & "\C.mdb' select t.id, t.name, t.sex from t,tmp where t.id=tmp.id and t.name=tmp.name and t.sex=tmp.sex"cn.Execute "delete from t where id in (select id from t in '" & App.Path & "\C.mdb')"cn.Execute "insert into t in '" & App.Path & "\A.mdb' select * from t"cn.Close
    Set cn = Nothing
      

  4.   

    cn 关闭前,最好cn.execute "Drop Table tmp"以便下次再做。
      

  5.   

    问题已经解决,不用插入临时表,独立操作三个表即可,如下:(CN.execute 执行)
    1.====
    A、B、C的内容不同,现要从B中找出A中已有的重复数据,并将找出的相同数据保存至C.mdb,用VB如何实现;
    insert into [;database=D:\C.mdb].tt (id,name,sex)
    select a.ID,a.name,a.sex
    from tt as a
    inner join [;database=D:\B.mdb].tt as b on a.id=b.id and a.name=b.name and a.sex=b.sex
    2、====
    将1步骤找出的重复数据从B中删除;
    delete * from tt
    where ID & name & sex in (select ID & name & sex from [;database=D:\A.mdb].tt)
    or
    delete a.* from [;database=D:\b.mdb].tt a inner join [;database=D:\A.mdb].tt b
    on a.ID=b.id and a.name=b.name and a.sex=b.sex3、====
    将删除重复数据后的B.mdb追加至A.MDBinsert into [;database=D:\a.mdb].tt (id,name,sex)
    select id,name,sex
    from [;database=D:\B.mdb].tt