请问在通过query插入记录之前,要判断数据库表中是否该记录已经存在的编程!(50分)

  • 主题发起人 主题发起人 jinhy
  • 开始时间 开始时间
J

jinhy

Unregistered / Unconfirmed
GUEST, unregistred user!
现在假设有一个数据库表yqgs_code,有一个yqgs字段,在插入一个记录之前,要先判断该记录是否在yqgs_code中,请问怎样编程,请写出程序代码!
 
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
Query1.SQL.Clear;
Query1.SQL.Add('SELECT yqgs FROM yqgs_code WHERE yqgs = ' + 'xx');
Query1.Open;
if Query1.RecordCount > 0 then Abort;
end;
 
beforeinsert events
if talbe1.locate(该记录)=true then
abort;
 
我觉得最保险的方法是:如果必须要求记录唯一的话,可以定义此字段的唯一性
 
A.设计数据库表时定义唯一性,捕捉异常避免出现内部错误信息,
可自行显示失败提示。
B.新增时可使用xWolf的方案,query1为临时,
SQL可用Select count(*) from 表名 where 条件,
判断Query1.Fields[0].asinteger >0,个人认为比RecordCount快.
C.更新时判断唯一性字段的值是否有变化(OLDVALUE,NEWVALUE),
如有变化执行类似新增时判断。
 
定义该字段为关键字,QUERY插入时若重复,系统会提示错误。
否则用老千的方法。
 
jinhy一个月没来了,分也不给:(
 
使用locate
if talbe1.locate('字段名',字段值,[参数])=true then
abort;
参数参见delphi帮助。
 
实在不能设置唯一性,可以利用触发。
 
请写出怎么扑获异常
 
接受答案了.
 
后退
顶部