procedure Tform.qryCostitemBeforePost(DataSet: TDataSet); begin if 合法条件不满足 then begin Showmessage(提示信息); Abort; //or dataset1.Cancel; end; end; Abort只是终止Post操作,你对记录作的修改还存在,不用重新录入,Cancel则取消上次Post后所有的输入,记录的字段值回到上次Post后的状态,本人觉得用Abort比Cancel方便。
写合法性检测的代码. 例如: if trim(adoquery1.fieldbyname('fieldone').asstring)='' then begin showmessage('该字段不可以为空,请重新输入!'); abort; end; ..........
button1用table.append,button2用table.post可以的procedure Table1.onPostError() begin if pos(e,'NULL') then showmessage('......不能为空'); if pos(e,'key....') then showmessage('......主键重复);end;这是数据库级的数据合法性验证用户级的可以在beforepost或着field的OnValidate中判断
在 BeforePost 事件中控制 ,如果失败用 ABORT方法 !
button1: table.insert;, button2: table.pos ; 校验 table的beforpost事件中加 if 合法条件不满足 then begin Showmessage(提示信息); Abort; end; …………………………
button2:保存前对记录进行验证。您的问题有点不好回答。
begin
if 合法条件不满足 then
begin
Showmessage(提示信息);
Abort; //or dataset1.Cancel;
end;
end;
Abort只是终止Post操作,你对记录作的修改还存在,不用重新录入,Cancel则取消上次Post后所有的输入,记录的字段值回到上次Post后的状态,本人觉得用Abort比Cancel方便。
不过也可以在DBGrid的Enter 等事件中...
button1用table.append,button2用table.post,那么在beforerpost中该如何写代码呢?
if trim(adoquery1.fieldbyname('fieldone').asstring)='' then
begin
showmessage('该字段不可以为空,请重新输入!');
abort;
end;
..........
begin
if pos(e,'NULL') then
showmessage('......不能为空'); if pos(e,'key....') then
showmessage('......主键重复);end;这是数据库级的数据合法性验证用户级的可以在beforepost或着field的OnValidate中判断
在 BeforePost 事件中控制 ,如果失败用 ABORT方法 !
button2: table.pos ;
校验
table的beforpost事件中加
if 合法条件不满足 then
begin
Showmessage(提示信息);
Abort;
end;
…………………………