Browse Source

+ fixed TBufDataset.SetRecNo (bug 6919) and added a test for it

git-svn-id: trunk@3657 -
joost 19 years ago
parent
commit
04b674e453
2 changed files with 45 additions and 1 deletions
  1. 2 1
      fcl/db/bufdataset.inc
  2. 43 0
      fcl/dbtests/testdbbasics.pas

+ 2 - 1
fcl/db/bufdataset.inc

@@ -616,6 +616,7 @@ var recnr        : integer;
     TmpRecBuffer : PBufRecLinkItem;
 
 begin
+  checkbrowsemode;
   if value > RecordCount then
     begin
     repeat until (getnextpacket < FPacketRecords) or (value <= RecordCount) or (FPacketRecords = -1);
@@ -628,7 +629,7 @@ begin
   TmpRecBuffer := FFirstRecBuf;
   for recnr := 1 to value-1 do
     TmpRecBuffer := TmpRecBuffer^.next;
-  GotoBookmark(TmpRecBuffer);
+  GotoBookmark(@TmpRecBuffer);
 end;
 
 function TBufDataset.GetRecNo: Longint;

+ 43 - 0
fcl/dbtests/testdbbasics.pas

@@ -34,6 +34,7 @@ type
     procedure TestdeFieldListChange;
     procedure TestLastAppendCancel;        // bug 5058
     procedure TestRecNo;                   // bug 5061
+    procedure TestSetRecNo;                // bug 6919
   end;
 
   { TSQLTestSetup }
@@ -252,6 +253,48 @@ begin
     end;
 end;
 
+procedure TTestDBBasics.TestSetRecNo;
+begin
+  with DBConnector.GetNDataset(15) do
+    begin
+    Open;
+    RecNo := 1;
+    AssertEquals(1,fields[0].AsInteger);
+    AssertEquals(1,RecNo);
+
+    RecNo := 2;
+    AssertEquals(2,fields[0].AsInteger);
+    AssertEquals(2,RecNo);
+
+    RecNo := 8;
+    AssertEquals(8,fields[0].AsInteger);
+    AssertEquals(8,RecNo);
+
+    RecNo := 15;
+    AssertEquals(15,fields[0].AsInteger);
+    AssertEquals(15,RecNo);
+
+    RecNo := 3;
+    AssertEquals(3,fields[0].AsInteger);
+    AssertEquals(3,RecNo);
+
+    RecNo := 14;
+    AssertEquals(14,fields[0].AsInteger);
+    AssertEquals(14,RecNo);
+
+    RecNo := 15;
+    AssertEquals(15,fields[0].AsInteger);
+    AssertEquals(15,RecNo);
+
+    // test for exceptions...
+{    RecNo := 16;
+    AssertEquals(15,fields[0].AsInteger);
+    AssertEquals(15,RecNo);}
+
+    Close;
+    end;
+end;
+
 
 procedure TTestDBBasics.SetUp;
 begin