(патч) Баг: Tfrxdbdataset с Rangeend = Recurrent повторяет последнюю запись

отредактировано 20:47 Раздел: FastReport 4.0
FR 4.14

Описание бага:
Два 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

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.