mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-27 03:29:22 +02:00
* Do not change the current record on an index change
git-svn-id: trunk@10047 -
This commit is contained in:
parent
c27b422416
commit
3dc00dc9d8
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user