我写了一个将EXCEL导入SQL2000数据库的程序,现在导入功能是实现了,但是他不能识别重复数据,我想问下能不能够在这个导入程序的基础上,实现直接更新数据呢??也就是第一次EXCEL数据被导入之后,数据库里面就有了数据!!
然后以后EXCEL有的数据更新了,我又再次导入,就直接实现更新数据库,而不是又重复导入了!!是否能就在我原来的导入按钮上面同时实现这个功能吗??还是需要再单独用一个按钮来控制更新功能呢??希望有高手能帮我说说怎么做!~~

解决方案 »

  1.   

    1.你可以对比每条数据,如果相同就视为重复记录
    2.导入前先delete表中所有数据,这样导入就不会重复了
      

  2.   

    这个delete应该写在循环外面吧!!!你看我写在这里行吗?begin
      with ADOQuery2 do
      begin
        ADOQuery2.SQL.clear;
        ADOQuery2.SQL.add('select * from [sheet1$]');
        ADOQuery2.Open;
        ADOQuery2.First;
      end;  ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.add('select * from Pub_Btype');
      ADOQuery1.Open;
      iNo:=1;
      ADOQuery3.SQL.Clear;
      ADOQuery3.SQL.add('select * from Pub_Btype_Assist');
      ADOQuery3.Open;
      ADOQuery3.delete;
      ADOQuery1.delete;
       with Adoquery2 do while not eof do
       begin
      

  3.   

    位置对,但不是单一delete
    是要写sql语句,把表中原有的数据全部清空 
    delete from ADOQuery1的表
    delete from ADOQuery3的表
      

  4.   

      我在数据库里加了一个字段叫delflat,赋值为0,按照你的方法说的,delflat=0的,就不能删除,接下来我应该怎么在程序里面写代码呢??
      

  5.   

    就一个字段就好弄了,笨方法,插入时,先从库中select一下单位名,如果有记录就表示重复,没有就添加新的
      

  6.   

    恩,我也是这样想的,但是我不知道这个SQL语句怎么写!~~
      

  7.   

    begin 
      with ADOQuery2 do 
      begin 
        ADOQuery2.SQL.clear; 
        ADOQuery2.SQL.add('select * from [sheet1$]'); 
        ADOQuery2.Open; 
        ADOQuery2.First; 
      end;   ADOQuery1.SQL.Clear; 
      ADOQuery1.SQL.add('select * from Pub_Btype'); 
      ADOQuery1.Open; 
      iNo:=1; 
      ADOQuery3.SQL.Clear; 
      ADOQuery3.SQL.add('select * from Pub_Btype_Assist'); 
      ADOQuery3.Open;
      with Adoquery2 do while not eof do 
      begin
        //先 select 单位名称 from 表名 where 单位名称='+QuotedStr(你的值);查出后,判断是否有数据,如果有,那就next,不添加,如果没有,就往下执行添加代码
      end;
      

  8.   

     bdmh,为什么只用了一个表呢??,按道理应该是2个表对比啊!~~我还是没有看懂
      

  9.   

    //先 select 单位名称 from 表名 where 单位名称='+QuotedStr(你的值);查出后,判断是否有数据,如果有,那就next,不添加,如果没有,就往下执行添加代码 5555555555555,还是没有解决到!~~bdmh,帮帮忙,程序里面我不写具体的值,你给我的方法是把数据都写出来,太多了,我只有让数据库去找出来,两个表怎么用SQL语句啊?sheet1$里面的字段就是“名称”,Pub_Btype里面的字段就是“FullName”,怎么写SQL语句啊?
      

  10.   

    with Adoquery2 do while not eof do 
      begin 
    select @count=count(1) from [sheet1$] where [sheet1$].名称 not in (select fullname from Pub_Btype);
    if @count>1 ;




    为什么不行啊??
      

  11.   

    新建一个adoquyery负责查找是否存在重复记录
      

  12.   

    如果再用一个adoquyery,那控件里面的SQL语句和程序里面的SQL语句是写成一样的吗????
      

  13.   

    新的ADOQUYERY需要连接ADOConnection,但是这里涉及两个表,也就涉及了ADOConnection1和ADOConnection2,ADOQUYERY这里就选不了了啊!~~