问题描述:
     我用delphi做了一个录入界面,容许用户每次录入任意多条记录后保存到
     Access数据库表中, 该表有四个列,这4个列都是主键。  
        问题请教: 如何避免在用户输入中有重复记录的时候,能剔除重复的
                  记录并同时不影响速度?(如果有重复的话,数据库的刷新会出现
                   异常)。

解决方案 »

  1.   

    写入前,先检查是否有重复数据。
    如果用的是Table1,就再建一个和Table1设置一样的Table2,利用Table2来查找是否有重复数据,有则弹出SHOWMESSAGE,没有则提交,
      

  2.   

    将判断是否重复和插入数据写入同一个过程,调用同一个ADOQuery
    procedure save_or_not(str1,str2,str3,str4:string);  //代表四个字段的值
    begin
      with ADOQuery do
      begin
        close;
        sql.clear;
        sql.add('select * from table_na where field1='''str1+''' and field2='''+str2+
                 ''' and field3='''str3+''' and field4=str4'''+'''');
        prepared;
        open;
      end;
      if ADOQuery.recordcount=0 then
      begin
        with ADOQuery do
        begin
          close;
          sql.clear;
          sql.add('insert into table_na ');  //插入的具体写法忘了,你自己看吧
          prepared;
          execusql;
        end;
      end;
    end;然后调用次过程,分别对每条记录进行判断
      

  3.   

    to  wangguan007(张) :
      很抱歉,没能在线看到你的答复。 你提出的这个解决方法我觉得在效率上比较慢,
    就我在测试中发现,平凡的打开和关闭数据库很毫时间。 还有比这个效率更好的方法吗?
      

  4.   

    搜索数据库,看有没有相同的记录存在,如果没有就添加记录,如果有相同的,就修改记录,可以通过sql语句实现,思路是这样,具体你自己弄把
      

  5.   

    to swordman119(★人无名剑也无名★) 
    我说的是输入有重复呀, 你在好好理解吧
      

  6.   

    在当前数据集FIND或LOCATE应该很快的吧?
      

  7.   

    to : WGYKING(WGY_KING) 
       说得好