现在插入成功了,但是插入前我想做一次查询,查到相同信息就不插入,这功能下面这段程序没实现,我该怎么改呢?procedure TForm2.suiButton1Click(Sender: TObject);
var
  i : integer;
begin
  if length(trim(suiedit1.text)) = 0 then
  begin
    form1.ShowM.Text := '请输入票据号码!';
    form1.ShowM.ShowModal;
    exit;
  end;
  i := globalfunc.checktextisnumeric(trim(suiedit1.Text),'票据号码');
  if (i=2) or (i=3) then
  begin
    suiedit1.Text := '';
    exit;
  end;
  if i=0 then
  begin
    form3.ADOQuery1.Close;
    form3.ADOQuery1.SQL.Clear;
    form3.ADOQuery1.SQL.Add('select * from BenHang where GF_Notedata = #' + formatdatetime('yyyy/mm/dd',datetimepicker1.Date) + '# and GF_NoteNumber = ' + trim(suiedit1.Text) );
    form3.ADOQuery1.ExecSQL;
    if form3.ADOQuery1.FieldCount = 0 then
    begin
      form3.ADOQuery1.Close;
      form3.ADOQuery1.SQL.Clear;
      form3.ADOQuery1.SQL.Add('insert into BenHang(GF_Notedata,GF_NoteNumber) values(#'+formatdatetime('yyyy/mm/dd',DateTimePicker1.Date)+'#,'+trim(suiedit1.Text)+')');
      form3.ADOQuery1.ExecSQL;
      suiedit1.Text := '';
      suiedit1.SetFocus;
      exit;
    end else
    begin
      form1.ShowM.Text:='该票据信息已存在!';
      form1.ShowM.ShowModal;
      exit;
    end;
  end;
end;

解决方案 »

  1.   

    把 if form3.ADOQuery1.FieldCount = 0 then 改为
      if form3.adoquery1.recordcount=0 then试试,最好是写在beforeinsert中
      

  2.   

    并把form3.ADOQuery1.ExecSQL;改为form3.ADOQuery1.open;
      

  3.   

    同意楼上的观点,
    不过简单的方法是在insert语句中直接加子查询判断该值是否存在该表中
    语句较复杂,可是速度快多啦。
      

  4.   

    procedure TForm2.suiButton1Click(Sender: TObject);
    var
      i : integer;
    begin
      if length(trim(suiedit1.text)) = 0 then
      begin
        form1.ShowM.Text := '请输入票据号码!';
        form1.ShowM.ShowModal;
        exit;
      end;
      i := globalfunc.checktextisnumeric(trim(suiedit1.Text),'票据号码');
      if (i=2) or (i=3) then
      begin
        suiedit1.Text := '';
        exit;
      end;
      if i=0 then
      begin
        form3.ADOQuery1.Close;
        form3.ADOQuery1.SQL.Clear;
        form3.ADOQuery1.SQL.Text:='select Count(*) as ReCount from BenHang where GF_Notedata = #' + formatdatetime('yyyy/mm/dd',datetimepicker1.Date) + '# and GF_NoteNumber = ' + trim(suiedit1.Text);
        form3.ADOQuery1.Open;
        if form3.ADOQuery1['ReCount']= 0 then
        begin
          form3.ADOQuery1.Close;
          form3.ADOQuery1.SQL.Clear;
          form3.ADOQuery1.SQL.Add('insert into BenHang(GF_Notedata,GF_NoteNumber) values(#'+formatdatetime('yyyy/mm/dd',DateTimePicker1.Date)+'#,'+trim(suiedit1.Text)+')');
          form3.ADOQuery1.ExecSQL;
          suiedit1.Text := '';
          suiedit1.SetFocus;
          exit;
        end else
        begin
          form1.ShowM.Text:='该票据信息已存在!';
          form1.ShowM.ShowModal;
          exit;
        end;
      end;
    end;