其实很简单的 procedure TForm1.ADODataSet1BeforePost(DataSet: TDataSet); begin if DataSet.State = dsedit then Begin Application.MessageBox('是修改', '' ,64); End else if DataSet.State = dsinsert then Begin Application.MessageBox('是新增', '' ,64); End; //abort; end; procedure TForm1.ADODataSet1BeforeDelete(DataSet: TDataSet); begin Application.MessageBox('是删除', '' ,64); //abort; end;
回复你的另一个问题,看修改前后的值 procedure TForm1.ADODataSet1BeforePost(DataSet: TDataSet); begin if DataSet.State = dsedit then Begin Application.MessageBox( pchar( vartostr( DataSet.FieldByName('xxx').OldValue ) ) , '修改前' ,64); Application.MessageBox( pchar( vartostr( DataSet.FieldByName('xxx').newValue ) ) , '修改后' ,64); End; //abort; end;
我今天在运行程序的时候,我最后一和的数据,保存成功后,继续增加会在 if DataSet.State = dsinsert then 这个里面提示,意思还是把我当成新的数据在处理,
现在不是报错的问题, if DataSet.State = dsinsert then 这个是不是如果是新增就执行这个条件,问题是我新增后保存后,要进入下一行继续增加,这个时候还执行这个条件,可我不需要了。
procedure TForm1.ADODataSet1BeforePost(DataSet: TDataSet);
begin
if DataSet.State = dsedit then
Begin
Application.MessageBox('是修改', '' ,64);
End else
if DataSet.State = dsinsert then
Begin
Application.MessageBox('是新增', '' ,64);
End;
//abort;
end;
procedure TForm1.ADODataSet1BeforeDelete(DataSet: TDataSet);
begin
Application.MessageBox('是删除', '' ,64);
//abort;
end;
procedure TForm1.ADODataSet1BeforePost(DataSet: TDataSet);
begin
if DataSet.State = dsedit then
Begin
Application.MessageBox( pchar( vartostr( DataSet.FieldByName('xxx').OldValue ) ) , '修改前' ,64);
Application.MessageBox( pchar( vartostr( DataSet.FieldByName('xxx').newValue ) ) , '修改后' ,64);
End;
//abort;
end;
我今天在运行程序的时候,我最后一和的数据,保存成功后,继续增加会在 if DataSet.State = dsinsert then 这个里面提示,意思还是把我当成新的数据在处理,
if DataSet.State = dsinsert then 这个是不是如果是新增就执行这个条件,问题是我新增后保存后,要进入下一行继续增加,这个时候还执行这个条件,可我不需要了。