Browse Source

fcl-db: base: for UniDirectional DataSet initialize BufferCount=1; + adapt also test (checked with Delphi, where for UniDirectional sql dataset (f.e.TSQLTable) on Next is also generated deDataSetScroll:-1 not deDataSetScroll:0)

git-svn-id: trunk@25174 -
lacak 12 years ago
parent
commit
a4ef523461
2 changed files with 13 additions and 5 deletions
  1. 5 1
      packages/fcl-db/src/base/dataset.inc
  2. 8 4
      packages/fcl-db/tests/testdbbasics.pas

+ 5 - 1
packages/fcl-db/src/base/dataset.inc

@@ -1124,7 +1124,11 @@ begin
 {$ifdef dsdebug}
 {$ifdef dsdebug}
   Writeln('Recalculating buffer list size');
   Writeln('Recalculating buffer list size');
 {$endif}
 {$endif}
-  ABufferCount := DefaultBufferCount;
+  if IsUniDirectional then
+    ABufferCount := 1
+  else
+    ABufferCount := DefaultBufferCount;
+
   for i := 0 to FDataSources.Count - 1 do
   for i := 0 to FDataSources.Count - 1 do
     for j := 0 to TDataSource(FDataSources[i]).DataLinks.Count - 1 do
     for j := 0 to TDataSource(FDataSources[i]).DataLinks.Count - 1 do
       begin
       begin

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

@@ -410,7 +410,7 @@ begin
     with ds do
     with ds do
       begin
       begin
       aDatasource.DataSet := ds;
       aDatasource.DataSet := ds;
-      open;
+      Open;
       DataEvents := '';
       DataEvents := '';
       Resync([rmExact]);
       Resync([rmExact]);
       if IsUniDirectional then
       if IsUniDirectional then
@@ -418,9 +418,13 @@ begin
       else
       else
         CheckEquals('deDataSetChange:0;DataSetChanged;',DataEvents);
         CheckEquals('deDataSetChange:0;DataSetChanged;',DataEvents);
       DataEvents := '';
       DataEvents := '';
-      next;
-      CheckEquals('deCheckBrowseMode:0;DataEvent;deDataSetScroll:0;DataSetScrolled:1;DataSetChanged;',DataEvents);
-      close;
+      Next;
+      if IsUniDirectional then
+        CheckEquals('deCheckBrowseMode:0;DataEvent;deDataSetScroll:-1;DataSetScrolled:1;DataSetChanged;',DataEvents)
+      else
+        CheckEquals('deCheckBrowseMode:0;DataEvent;deDataSetScroll:0;DataSetScrolled:1;DataSetChanged;',DataEvents);
+      DataEvents := '';
+      Close;
       end;
       end;
   finally
   finally
     aDatasource.Free;
     aDatasource.Free;