你可以使用sql语句,使用adoquery的语句为select * from 表名 where 主键=要求,然后再用adoquery.recordset.reordcount测试是否为0,如果为0则没有生成.
也可以用locate语句来查询是否存在此记录,如果有这条记录则就输入,否则也一样没有用,当然语句的写法同sql的条件一样。祝你好运

解决方案 »

  1.   

    同意楼上的观点locate方法!
      

  2.   

    举例:查找card表中是否有一个cardid为‘001’的记录
    var
      cardid:string;
    select cardid from card where cardid='001'
    query1.fieldbyname('cardid').asstring:=cardid;
    if cardid='' then
    begin
      //表明没有这条记录
    end
    else
    begin
      //表明存在这条记录
    end;
    其实有很多写法
      

  3.   

    上面改一下
    cardid:=query1.fieldbyname('cardid').asstring
      

  4.   

    举例:查找card表中是否有一个cardid为‘001’的记录
    var
      cardid:int;
    begin
       select count(cardid) as MyCount from card where cardid='001'
       query1.fieldbyname('MyCount').asstring;
       if trim(query1.fieldbyname('MyCount').asstring)='' then
       begin
          //表明没有这条记录
       end
       else
       begin
         // 表明存在这条记录
       end;
    end;
      

  5.   

    是主键就好办了:
    with Query1 do
    begin
      close;
      SQL.clear;
      SQL.Add('select * from tablename where filedname='主键值'');
      open;
    end;
    if Query1.isempty then
    //inerst
    ...
    else
    //提示记录已存在
    ...
    如果主键是多个字段,则在where子句中用and列举筛选条件;
      

  6.   

    不要用locate,用query速度比较快
      

  7.   

    最好不要用query.recordcount来判断记录数是否为零,
    有时会出问题,
    用not( query.eof and query.bof) 来判断好一些。