(патч) Баг: Tfrxdbdataset с Rangeend = Recurrent повторяет последнюю запись
FR 4.14
Описание бага:
Два TfrxDBDataSet, один с RangeEnd = reCount, второй с RangeEnd = reCurrent. Привязаны к одному TDataset. В случае, если TDataset содержит записей меньше, чем frxDBDataSet1.RangeEndCount, frxDBDataSet2 выводит последнюю запись, уже выведенную frxDBDataSet1, хотя не должен.
Причина:
При открытии frxDBDataSet2 берется букмарк от привязанного датасета, но не учитывается флаг Eof.
Решение
Юнит frxDBSet
Метод procedure TfrxDBDataSet.Open;
Строка
Описание бага:
Два TfrxDBDataSet, один с RangeEnd = reCount, второй с RangeEnd = reCurrent. Привязаны к одному TDataset. В случае, если TDataset содержит записей меньше, чем frxDBDataSet1.RangeEndCount, frxDBDataSet2 выводит последнюю запись, уже выведенную frxDBDataSet1, хотя не должен.
Причина:
При открытии frxDBDataSet2 берется букмарк от привязанного датасета, но не учитывается флаг Eof.
Решение
Юнит frxDBSet
Метод procedure TfrxDBDataSet.Open;
Строка
if (RangeBegin = rbCurrent) or (RangeEnd = reCurrent) then
Заменить на
if ((RangeBegin = rbCurrent) or (RangeEnd = reCurrent)) and not FDS.Eof then