我在追加数据前,想看一下数据是否重复,如果重复则不加,否则追加!
但在追加时不管我输入的记录数据表中有还是没有它都执行到 showmessage('ok!')!;
procedure Twzmc_form.Button4Click(Sender: TObject);
var
sl: integer;
begin
     //sl:=0;
     with dm.ADOQ2 do
     begin
     //sql.Clear;
     sql.Text:='select count(*) as sl from wzmingcheng where wzbianma='''+DBEdit1.Text+'''';//(变量)录入的记录';
     //showmessage(sql.text);
     execsql;
     end;
     if (sl>=1) then
     begin
     showmessage('当前记录已经存在');
     showmessage(inttostr(sl));
     //dm.ADOQ2.Cancel;
     end
     else
     begin
     showmessage('ok!');
     //dm.ADOQ2.Post;
     showmessage(inttostr(sl));
     end;
end;
谢谢,请各位帮忙!

解决方案 »

  1.   

    sql.Text:='select count(*) as sl from wzmingcheng where wzbianma='''+DBEdit1.Text+'''';//(变量)录入的记录';
         //showmessage(sql.text);
         execsql;==============
    在这个后面要赋值的
    s1=dm.ADOQ2.fieldbyname('sl').asInteger;
    ==================
    SQL语句中的sl并不会直接进到变量s1中,这是两回事儿
      

  2.   

    if (sl>=1) then  //改成
    if RecordCount >=1 then
      

  3.   

    改后提示
    FIELD ‘SL’NOT FOUND。
      

  4.   

    procedure Twzmc_form.Button4Click(Sender: TObject);
    var
    sl: integer;
    begin
         //sl:=0;
         with dm.ADOQ2 do
         begin
         //sql.Clear;
         sql.Text:='select count(*) as sl from wzmingcheng where wzbianma='''+DBEdit1.Text+'''';//(变量)录入的记录';
         //showmessage(sql.text);
         open;              ////////////这儿不能用execsql
         end;
         s1=fieldbyname('sl').asInteger;  //////////注意这里要给s1赋值
         if (sl>=1) then
         begin
         showmessage('当前记录已经存在');
         showmessage(inttostr(sl));
         //dm.ADOQ2.Cancel;
         end
         else
         begin
         showmessage('ok!');
         //dm.ADOQ2.Post;
         showmessage(inttostr(sl));
         end;
    end;
      

  5.   

    楼上说的对,用OPEN!!
    sl没有被赋值!!