FR 3.20 bug

отредактировано 02:35 Раздел: FastReport 3.0
День добрый!

Суть проблемы:

В качестве источника данных для репорта может быть как clientdataset, так и обычный adodataset. В оба датасета данные приходят от метода, возвращающего _recordset. Во втором случае простым присваиванием adodataset.recordset := _recordset. На форме лежит компонент типа TfrxDBDataset, свойство Dataset которого указывает на нужный dataset.
Так вот, в грид все данные выводятся без запинки, а при вызове метода PrepareReport в первом случае всё окей, а во втором возникает ошибка Connection missing or connection string и датасет закрывается.

В чём дело?

Комментарии

  • отредактировано 02:35
    Было бы неплохо поиметь работающий пример.
  • отредактировано 02:35
    Нашёл!

    Нашёл откуда ноги растут!
    Дело в том что если подключить к проекту модуль frx2xto30, в котором определено "событие" frxFR2Events.OnGetValue := frxFR2EventsNew.DoGetValue, то при наличии в шаблоне отчёта заголовка группы, в методе TfrxReport.DoGetValue происходит анализ шаблона как двушного, даже если он троешный.
    Т.е. срабатывает проверка if Assigned(frxFR2Events.OnGetValue)
    При этом если в проекте два датасета, например адошный и клиентский и имя одного из них совпадает
    со значение свойства username компонента frxDBDataSet, то в случае когда данные в первом датасете, а второй вообще закрыт и вылезет ошибка в методе PrepareReport.

    Куда пример намылить?
  • отредактировано 02:35
    Господа! ждем-с новой версии без этого глюка
  • отредактировано 02:35
    Да это не глюк. frx2xto30 рекомендуется использовать исключительно для открытия старых отчетов и конвертации их в новый формат. В рабочий проект эту утилиту включать не рекомендуется.
  • отредактировано January 2006
    Допустим. Но хотябы включить в код метода TfrxReport.DoGetValue проверку врсии шаблона (первый байт шаблона, например. В версии 2.5х он равен 19, версии 3.х - 3С). И вызавать соответствующе методы парсинга шаблона.
    Ведь это-то не сложно.
  • отредактировано 02:35
    Действия утилиты frx2xto30 этим не ограничиваются. К примеру, она модифицирует синтаксис PascalScript, чтобы можно было использовать переменные без их объявления. Кроме того, с этой утилитой нельзя работать в потоках. И т.д.
  • отредактировано 02:35
    Хорошо, а что делать если довольно много отчётов написано уже в версии 2.53 и переводить их разом просто времени нет? А так по мере необходимости один за одним.
    Ладно, как-нибудь вывернусь. Напишу по COM-объекту для каждого случая, или в nil сведу всё, что в секции инициализации модуля frx2xto30, в случае если форма троешная.
    Хотя хотелось бы, чтобы такого рода действия в будущем предпринимать не пришлось.

    Спасибо за ответы.

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

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