Browse Source

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 -
lacak 10 years ago
parent
commit
0dd93f2384
2 changed files with 11 additions and 6 deletions
  1. 3 3
      packages/fcl-db/src/sdf/sdfdata.pp
  2. 8 3
      packages/fcl-db/tests/testdbbasics.pas

+ 3 - 3
packages/fcl-db/src/sdf/sdfdata.pp

@@ -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);

+ 8 - 3
packages/fcl-db/tests/testdbbasics.pas

@@ -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);