* Tdataset.SetBufListSize(0) should clear the buffer

* A closed dataset should have FRecordcound set to 0 (+added test)
 * Fix for bug #8228

git-svn-id: trunk@6256 -
This commit is contained in:
joost 2007-01-28 20:41:09 +00:00
parent 87b2630684
commit 31636e3887
2 changed files with 30 additions and 2 deletions

View File

@ -411,7 +411,7 @@ begin
DoBeforeClose;
FreeFieldBuffers;
ClearBuffers;
SetBufListSize(-1);
SetBufListSize(0);
SetState(dsInactive);
InternalClose;
DoAfterClose;
@ -902,6 +902,7 @@ Procedure TDataset.SetBufListSize(Value: Longint);
Var I : longint;
begin
if Value = 0 then Value := -1;
{$ifdef dsdebug}
Writeln ('SetBufListSize: ',Value);
{$endif}
@ -965,10 +966,10 @@ begin
else
ReAllocMem(FBuffers,(Value+1)*SizeOf(Pchar));
end;
if FRecordcount > Value then FRecordcount := Value;
end;
If Value=-1 then
Value:=0;
if FRecordcount > Value then FRecordcount := Value;
FBufferCount:=Value;
{$ifdef dsdebug}
Writeln (' SetBufListSize: Final FBufferCount=',FBufferCount);

View File

@ -56,6 +56,7 @@ type
procedure TestDataEventsResync;
procedure TestBug7007;
procedure TestBug6893;
procedure TestRecordcountAfterReopen; // partly bug 8228
procedure TestdeFieldListChange;
procedure TestLastAppendCancel; // bug 5058
procedure TestRecNo; // bug 5061
@ -477,6 +478,32 @@ begin
end;
end;
procedure TTestDBBasics.TestRecordcountAfterReopen;
var
datalink1: tdatalink;
datasource1: tdatasource;
query1: TDataSet;
begin
query1:= DBConnector.GetNDataset(11);
datalink1:= TDataLink.create;
datasource1:= tdatasource.create(nil);
try
datalink1.datasource:= datasource1;
datasource1.dataset:= query1;
query1.active := true;
query1.active := False;
AssertEquals(0, THackDataLink(datalink1).RecordCount);
query1.active := true;
AssertTrue(THackDataLink(datalink1).RecordCount>0);
query1.active := false;
finally
datalink1.free;
datasource1.free;
end;
end;
procedure TTestDBBasics.TestStringFilter;
var tel : byte;
begin