* Do not change the current record on an index change

git-svn-id: trunk@10047 -
This commit is contained in:
joost 2008-01-27 14:13:58 +00:00
parent c27b422416
commit 3dc00dc9d8
2 changed files with 51 additions and 0 deletions

View File

@ -923,6 +923,7 @@ begin
for i := 0 to FIndexesCount-1 do
if SameText(FIndexes[i].Name,AValue) then
begin
FIndexes[i].FCurrentRecBuf := FCurrentIndex^.FCurrentRecBuf;
FCurrentIndex:=@FIndexes[i];
if active then Resync([rmCenter]);
exit;

View File

@ -55,6 +55,8 @@ type
procedure TestIndexFieldNames;
procedure TestIndexFieldNamesAct;
procedure TestIndexCurRecord;
procedure TestNullAtOpen;
@ -1076,6 +1078,54 @@ begin
end;
end;
procedure TTestDBBasics.TestIndexCurRecord;
// Test if the currentrecord stays the same after an index change
var ds : TBufDataset;
AFieldType : TFieldType;
i : integer;
OldID : Integer;
OldStringValue : string;
begin
ds := DBConnector.GetFieldDataset as TBufDataset;
with ds do
begin
AFieldType:=ftString;
AddIndex('testindex','F'+FieldTypeNames[AfieldType]);
open;
for i := 0 to (testValuesCount div 3) do
Next;
OldID:=FieldByName('id').AsInteger;
OldStringValue:=FieldByName('F'+FieldTypeNames[AfieldType]).AsString;
IndexName:='testindex';
AssertEquals(OldID,FieldByName('id').AsInteger);
AssertEquals(OldStringValue,FieldByName('F'+FieldTypeNames[AfieldType]).AsString);
next;
AssertTrue(OldStringValue<=FieldByName('F'+FieldTypeNames[AfieldType]).AsString);
prior;
prior;
AssertTrue(OldStringValue>=FieldByName('F'+FieldTypeNames[AfieldType]).AsString);
OldID:=FieldByName('id').AsInteger;
OldStringValue:=FieldByName('F'+FieldTypeNames[AfieldType]).AsString;
IndexName:='';
AssertEquals(OldID,FieldByName('id').AsInteger);
AssertEquals(OldStringValue,FieldByName('F'+FieldTypeNames[AfieldType]).AsString);
next;
AssertEquals(OldID+1,FieldByName('ID').AsInteger);
prior;
prior;
AssertEquals(OldID-1,FieldByName('ID').AsInteger);
end;
end;
procedure TTestDBBasics.TestIndexFieldNames;
var ds : TBufDataset;
AFieldType : TFieldType;