1 dataset.eof
2 保存后刷新就有主键了。

解决方案 »

  1.   

    其实很简单的
    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;
      

  2.   

    回复你的另一个问题,看修改前后的值
    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;
      

  3.   


    我今天在运行程序的时候,我最后一和的数据,保存成功后,继续增加会在 if DataSet.State =  dsinsert  then  这个里面提示,意思还是把我当成新的数据在处理,
      

  4.   

    现在不是报错的问题,
    if DataSet.State =  dsinsert  then   这个是不是如果是新增就执行这个条件,问题是我新增后保存后,要进入下一行继续增加,这个时候还执行这个条件,可我不需要了。