fcl-db: sdfdataset: RecNo should return nonzero value for State=dsEdit if there is valid record; Compatible with other datasets + test

git-svn-id: trunk@30503 -
This commit is contained in:
lacak 2015-04-09 05:16:37 +00:00
parent 9079227c56
commit 0dd93f2384
2 changed files with 11 additions and 6 deletions

View File

@ -507,11 +507,11 @@ end;
function TFixedFormatDataSet.GetRecNo: Longint;
var
BufPtr: TRecordBuffer;
RecBuf: TRecordBuffer;
begin
Result := 0;
if GetActiveRecBuf(BufPtr) and Not (State in dsEditModes) then
Result := PRecInfo(BufPtr + FRecInfoOfs)^.RecordNumber;
if GetActiveRecBuf(RecBuf) and (State <> dsInsert) then
Result := PRecInfo(RecBuf + FRecInfoOfs)^.RecordNumber;
end;
procedure TFixedFormatDataSet.SetRecNo(Value: Integer);

View File

@ -553,9 +553,14 @@ begin
CheckEquals(1,RecordCount);
append;
FieldByName('id').AsInteger := 1;
FieldByName('id').AsInteger := 2;
CheckEquals(0,RecNo,'RecNo after 3rd Append');
CheckEquals(1,RecordCount);
post;
edit;
CheckEquals(2,RecNo,'RecNo after Edit');
CheckEquals(2,RecordCount);
Close;
@ -756,12 +761,12 @@ begin
CheckEquals(1,FieldByName('id').AsInteger);
next;
delete;
delete; // id=2
GotoBookmark(BM2);
CheckEquals(3,FieldByName('id').AsInteger,'After #2 deleted');
delete;delete;
delete;delete; // id=3,4
GotoBookmark(BM3);
CheckEquals(6,FieldByName('id').AsInteger);