如何判断一个table当前的操作状态?
我用一个table连接一个表,有时候用insert操作有时候用edit操作,但这些操作有时候是冲突的,例如如果进行了edit操作在没有post或者操作前如果进行其他操作时会出现异常的.
我想在每次进行插入,编辑,删除等操作时先判断一下当前TABLE的状态是什么.
请问如何实现!

解决方案 »

  1.   

    type TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc, dsOpening); 一般只用dsBrowse,dsEdit,dsInsert
      

  2.   

    table.statestate包括了:vsd
    dsbrowse,dsedit,sdsedit等
      

  3.   

    利用TDataSet.State属性~~procedure TForm1.Button1Click(Sender: TObject);
    begin
      case Table1.State of
        dsBrowse: { TODO -oZswang : 处理浏览状态 };
        dsEdit: { TODO -oZswang : 处理编辑状态 };
        dsInsert: { TODO -oZswang : 处理插入状态 };
      end;
    end;
      

  4.   

    procedure TForm1.AppendNoteClick(Sender: TObject);var
      Stream: TStream;
      S: string;
    begin
      with Tasks do
      begin    Edit;    if State = dsEdit then
        begin
          Stream := CreateBlobStream(FieldByName('Notes'), bmReadWrite);
          try
            Stream.Seek(0, 2); {Seek 0 bytes from the stream's end point}
            S := ' This line will be added to the end.';
            Stream.Write(PChar(S)^, Length(S));
            Post;
          finally
            Stream.Free;
          end;
        end;
      end;
    end;