procedure adoquery1BeforePost(DataSet: TDataSet);
begin
if dataset.fieldbyname('name').asstring='' then
begin
showmessage('...')
abort;
end;
end;
procedure OkBTClick(Sender: TObject);
begin
adoquery1.append;
adoquery1.fieldbyname('name').asstring:=edit1.text;
adoquery1.post;
end;
如果我第一次post,检测到name 为空,会出现错误提示框,但是当我在文本框输入数据,再点击确实按钮,又出现这个提示框,我在调试时发现adoquery1在执行每一次post失败,第二次,当执行到adoquery1.append就直接执行
adoquery1.beforepost事件,而第一次时,是执行到adoquery1.post才招待beforepost的,是不是在beforepost事件中要加入什么语句,让如果中断的话就让append无效。
begin
if dataset.fieldbyname('name').asstring='' then
begin
showmessage('...')
abort;
end;
end;
procedure OkBTClick(Sender: TObject);
begin
adoquery1.append;
adoquery1.fieldbyname('name').asstring:=edit1.text;
adoquery1.post;
end;
如果我第一次post,检测到name 为空,会出现错误提示框,但是当我在文本框输入数据,再点击确实按钮,又出现这个提示框,我在调试时发现adoquery1在执行每一次post失败,第二次,当执行到adoquery1.append就直接执行
adoquery1.beforepost事件,而第一次时,是执行到adoquery1.post才招待beforepost的,是不是在beforepost事件中要加入什么语句,让如果中断的话就让append无效。
修改如下
procedure TCustomerFrm.ADOQuery1BeforePost(DataSet: TDataSet);
begin
if dataset.fieldbyname('a').asstring='' then
begin
showmessage('...');
adoquery1.Cancel ;//這里要取消
abort;
end;
end;