我就想在保存时如何判断内容重复输入 在保存时用: with Qry_Code do beign sql.clear; sql.add('select 1 from table1 where code=:code'); parameter.parabyname('code').values:='123'; open end if qry_code.reacordcount>0 then begin Application.MessageBox('数据保存失败,数据重复!','系统提示',MB_OK+MB_ICONERROR); Abort; end; 可以编辑时用以上就会出错,因为DB中已存在这次记录了;
楼主的select 1 from table1 where code=:code'不是保存数据的语句。对于数据集的insert或edit,一般应该在本地数据集tclientdataset类型处理。当然如果是c/s结构,是adoquery类型的数据集,也是针对adoquery类型本地缓存的数据在inser或edit后再保存到数据库的(这种方法强烈不建议)。而对于判断数据是否重复,首先需了解数据是关键字段还是非关键字段的数据,关键字段的数据库自然回维护,如果是非关键字段的,建议在数据库中对字段设置唯一处理。不建议在数据保存前查找数据库中是否存在相同数据。本身对于数据库来说是一个多线程连接,有多人同时进行数据编辑的。
query.append
else
query.edit;
....
query.post;
另外最简单的方法是在表结构中增加唯一性索引,修改时如果报主键冲突或唯一性冲突就提示数据重复,连校验都省了
在保存时用:
with Qry_Code do
beign
sql.clear;
sql.add('select 1 from table1 where code=:code');
parameter.parabyname('code').values:='123';
open
end
if qry_code.reacordcount>0 then
begin
Application.MessageBox('数据保存失败,数据重复!','系统提示',MB_OK+MB_ICONERROR);
Abort;
end;
可以编辑时用以上就会出错,因为DB中已存在这次记录了;