先导入到Access中的临时表中,然后再用Access的Jet-SQL处理。

解决方案 »

  1.   

    --或
    insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\test.mdb','select CarNo from 客户信息表')
    select cph 
    from qx_khxxb
    where 编号 not in (select 编号 from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\test.mdb','select CarNo from 客户信息表'))
      

  2.   

    先更新,再追加不存在的,用not in 或left join都可以。not in效率不及left join。
      

  3.   

    --先删除有的,
    delete a from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\test.mdb','select CarNo from 客户信息表') a
    where exists(Select * from qx_khxxb where cph=a.CarNo)--插入新的
    insert into OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\test.mdb','select CarNo from 客户信息表')
    select cph from qx_khxxb
      

  4.   

    一般不要作删除,因为可能建立了关系。最好是先按字段,如:客户编号关联更新。然后再追加没有的,使用left join。
      

  5.   

    谢谢大家,特别是wangtiecheng,你用not in应该是可以把新的数据写入Access中,但怎么样更新Access已有的数据呢
      

  6.   

    如果有客户编号等唯一标识字段,就很好处理。如:update A set CarNo=B.cph 
    from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\test.mdb','select CarNo from 客户信息表') A 
        inner join  qx_khxxb B on A.客户编号=B.客户编号
      

  7.   


    --改一下update OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\test.mdb','select CarNo from 客户信息表') set CarNo=B.cph 
    from OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\test.mdb','select CarNo,客户编号 from 客户信息表') A 
        inner join  qx_khxxb B on A.客户编号=B.客户编号