你可以使用sql语句,使用adoquery的语句为select * from 表名 where 主键=要求,然后再用adoquery.recordset.reordcount测试是否为0,如果为0则没有生成. 也可以用locate语句来查询是否存在此记录,如果有这条记录则就输入,否则也一样没有用,当然语句的写法同sql的条件一样。祝你好运
举例:查找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; 其实有很多写法
举例:查找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;
是主键就好办了: with Query1 do begin close; SQL.clear; SQL.Add('select * from tablename where filedname='主键值''); open; end; if Query1.isempty then //inerst ... else //提示记录已存在 ... 如果主键是多个字段,则在where子句中用and列举筛选条件;
不要用locate,用query速度比较快
最好不要用query.recordcount来判断记录数是否为零, 有时会出问题, 用not( query.eof and query.bof) 来判断好一些。
var
cardid:string;
select cardid from card where cardid='001'
query1.fieldbyname('cardid').asstring:=cardid;
if cardid='' then
begin
//表明没有这条记录
end
else
begin
//表明存在这条记录
end;
其实有很多写法
cardid:=query1.fieldbyname('cardid').asstring
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;
with Query1 do
begin
close;
SQL.clear;
SQL.Add('select * from tablename where filedname='主键值'');
open;
end;
if Query1.isempty then
//inerst
...
else
//提示记录已存在
...
如果主键是多个字段,则在where子句中用and列举筛选条件;
有时会出问题,
用not( query.eof and query.bof) 来判断好一些。