Browse Source

* Fixed TDataLink.Activerecord, mantis 6893 + test

git-svn-id: trunk@6253 -
joost 18 years ago
parent
commit
f95f65de84
2 changed files with 44 additions and 0 deletions
  1. 2 0
      fcl/db/datasource.inc
  2. 42 0
      fcl/dbtests/testdbbasics.pas

+ 2 - 0
fcl/db/datasource.inc

@@ -7,6 +7,7 @@ Constructor TDataLink.Create;
 begin
   Inherited Create;
   FBufferCount:=1;
+  FFirstRecord := 0;
   FDataSource := nil;
   FDatasourceFixed:=False;
 end;
@@ -26,6 +27,7 @@ end;
 Procedure TDataLink.ActiveChanged;
 
 begin
+  FFirstRecord := 0;
 end;
 
 Procedure TDataLink.CheckActiveAndEditing;

+ 42 - 0
fcl/dbtests/testdbbasics.pas

@@ -55,6 +55,7 @@ type
     procedure TestEOFBOFClosedDataset;
     procedure TestDataEventsResync;
     procedure TestBug7007;
+    procedure TestBug6893;
     procedure TestdeFieldListChange;
     procedure TestLastAppendCancel;        // bug 5058
     procedure TestRecNo;                   // bug 5061
@@ -73,6 +74,8 @@ implementation
 
 uses toolsunit, bufdataset;
 
+type THackDataLink=class(TdataLink);
+
 procedure TTestDBBasics.TestIsEmpty;
 begin
   if not (DBConnector.GetNDataset(5) is TBufDataset) then
@@ -818,6 +821,45 @@ begin
   end;
 end;
 
+procedure TTestDBBasics.TestBug6893;
+var
+  datalink1: tdatalink;
+  datasource1: tdatasource;
+  query1: TDataSet;
+
+begin
+  query1:= DBConnector.GetNDataset(25);
+  datalink1:= TDataLink.create;
+  datasource1:= tdatasource.create(nil);
+  try
+    datalink1.datasource:= datasource1;
+    datasource1.dataset:= query1;
+
+    datalink1.buffercount:= 5;
+    query1.active := true;
+    query1.MoveBy(20);
+
+    AssertEquals(5, THackDataLink(datalink1).Firstrecord);
+    AssertEquals(4, datalink1.ActiveRecord);
+    AssertEquals(21, query1.RecNo);
+
+    query1.active := False;
+
+    AssertEquals(0, THackDataLink(datalink1).Firstrecord);
+    AssertEquals(0, datalink1.ActiveRecord);
+
+    query1.active := true;
+
+    AssertEquals(0, THackDataLink(datalink1).Firstrecord);
+    AssertEquals(0, datalink1.ActiveRecord);
+    AssertEquals(1, query1.RecNo);
+    
+  finally
+    datalink1.free;
+    datasource1.free;
+  end;
+end;
+
 procedure TTestDBBasics.TestBufDatasetCancelUpdates1;
 var i : byte;
 begin