急!delphi怎样处理数据库输入重复数据问题?

解决方案 »

  1.   

    不行,用ADOTable 输入Access 不想出现相同纪录
      

  2.   

    在adotable的beforepost中写代码判断数据库中是否已经存在相同的记录,如果存在就提示用户,这样可以吗
      

  3.   

    在Query的OnBeforePost事件来判断,如
    procedure TForm1.QyBeforePost(DataSet: TDataSet);
    var i : integer;
    begin
      with TmpQy do
      begin
        close;
        sql.Clear;
        SQL.Text := 'select * from aTable where
    CodeNo='+''''+Table.FieldByName('ID').AsString+'''';
        open;
        i := RecordCount;
        Close;
        if i> 0 then
        begin
          Application.MessageBox('对不起,编码重复,请您重新输入。','提示');
          Abort;
        end;
      end;
    end;
    ADO: 
    通过ButtonClick事件保存!
     begin
            mysql3:='select id from table where xh=''';
            mysql4:='''';
            ADOQuery3.SQl.Clear;
            ADOQuery3.Close;
            ADOQuery3.SQL.Add(mysql3+Edit1.Text+mysql4);
            ADOQuery3.Open;
                    If not ADOQuery3.eof then
                    begin
                    showMessage('对不起'+Edit1.Text+'已存在,请重新输入!');
                    Edit1.Text:='';
                    end
                    else
                    begin
                    ADOQuery3.Close;
                    ADOTable1.Insert;
                    ADOTable1['a1']:=Edit6.Text;
                    ADOTable1['a2']:=Edit1.Text;
                    ADOTable1['a3']:=Edit5.Text;
                    ADOTable1['a4']:=Edit3.Text;
                    ADOTable1['a5']:=Edit4.Text;
                    ADOTable1['a6']:=Edit2.Text;
                    ADOTable1['a7']:=Combobox1.Text;
                    ADOTable1.Post;
                    end
            end