Fast Report Enterprise Edition
Здравствуйте!
Уже устал писать в support - все мои запросы, тестовые примеры с демонстрацией ошибок уходят туда, как в бездонную бочку.
Максимум, чего удалось добиться ЗА МЕСЯЦ страданий - это статус "Принято к рассмотрению" для небольшой части моих запросов :-\
Пишу сюда, в надежде, что в глазах общественности разработчики проявять уважение к пользователям их продукта и займутся своими прямыми обязанностями - ИСПРАВЛЕНИЮ ДУРАЦКИХ ОШИБОК и доведению до ума жалких поделок с именами TfrxReportClient и TfrxReportServer, входящие в состав Enterprise-редакции.
Про ошибки здесь повторяться не буду, а вот про идеологию хотелось бы услышать адекватный ответ.
Ситуация: имеется самописный сервер приложений, выступающий в роли мультиплексора между пользователями и базами данных.
Для каждой базы данных в сервере есть своя пара TADOConnection и TfrxReportServer.
Собственно, хочется, чтобы каждый экземпляр сервера отчётов был привязан к конкретному соединению с базой данных и строил отчёты именно через него, а не передевал окультными путями в отчёт необходимый ConnectionString.
Есть такой замечательный компонент - TfrxADOComponents.
Умеет привязываться к ADOConnection и раздавать это соединение всем наборам данных в отчётах.
Но вот беда-то в чём - компонентик этот почему-то связывается не с TfrxReportServer, А С ГЛОБАЛЬНОЙ ПЕРЕМЕННОЙ ADOComponents в модуле frxADOComponents! Получается следующий эффект - каждое последующее соединение сервера к новой базе данных подменяет существующие соединения к БД у всех экземпляров серверов отчётов!
Уважаемые разработчики!
Подскажите выход из сложившейся ситуации.
Я сомневаюсь, что здесь есть простое решение, поэтому хотелось бы услышать, сколько примерно времени займёт решение данной проблемы?
p.s.> Я уже миллион раз проклял тот день, когда приобрёл ваш продукт.
Уже устал писать в support - все мои запросы, тестовые примеры с демонстрацией ошибок уходят туда, как в бездонную бочку.
Максимум, чего удалось добиться ЗА МЕСЯЦ страданий - это статус "Принято к рассмотрению" для небольшой части моих запросов :-\
Пишу сюда, в надежде, что в глазах общественности разработчики проявять уважение к пользователям их продукта и займутся своими прямыми обязанностями - ИСПРАВЛЕНИЮ ДУРАЦКИХ ОШИБОК и доведению до ума жалких поделок с именами TfrxReportClient и TfrxReportServer, входящие в состав Enterprise-редакции.
Про ошибки здесь повторяться не буду, а вот про идеологию хотелось бы услышать адекватный ответ.
Ситуация: имеется самописный сервер приложений, выступающий в роли мультиплексора между пользователями и базами данных.
Для каждой базы данных в сервере есть своя пара TADOConnection и TfrxReportServer.
Собственно, хочется, чтобы каждый экземпляр сервера отчётов был привязан к конкретному соединению с базой данных и строил отчёты именно через него, а не передевал окультными путями в отчёт необходимый ConnectionString.
Есть такой замечательный компонент - TfrxADOComponents.
Умеет привязываться к ADOConnection и раздавать это соединение всем наборам данных в отчётах.
Но вот беда-то в чём - компонентик этот почему-то связывается не с TfrxReportServer, А С ГЛОБАЛЬНОЙ ПЕРЕМЕННОЙ ADOComponents в модуле frxADOComponents! Получается следующий эффект - каждое последующее соединение сервера к новой базе данных подменяет существующие соединения к БД у всех экземпляров серверов отчётов!
Уважаемые разработчики!
Подскажите выход из сложившейся ситуации.
Я сомневаюсь, что здесь есть простое решение, поэтому хотелось бы услышать, сколько примерно времени займёт решение данной проблемы?
p.s.> Я уже миллион раз проклял тот день, когда приобрёл ваш продукт.
Комментарии
Я правда не разработчик, но совет могу дать:
Возьми TfrxADOComponents и перепиши в них работу касающуюся DefaultDatabase и глобального свойства ADOComponents.
В свое время, когда я делал свои движки для FR, я отказался от этого механизма, так как он ограничивает возможности движка.
В качестве примера посмотри мой движки. Они есть в бинарной конфе или на моем сайте http://stalker4.dp.ua
Спасибо за ответ!
Скачал Ваши разработки, но так и не понял, как нужно изменить TfrxADOComponents,
чтобы в отчёты передавалось конкретное соединение, а не глобальное...
По-моему проблема глубже. Вот пример:
1. Конструктор TfrxADOQuery:
2. Метод SetDatabase:
Как видно, при создании отчётом экземпляра TfrxADOQuery ему всегда присваивается глобальное соединение (SetDatabase(nil)).
Очень хотелось бы вместо этого увидеть что-нибуть вроде такого кода:
Но как в таком случае связать Report с различными движками БД?
Посмотри мой метод TfrxAsaDataSet.Create, у меня там SetDatabase(nil) нет вообще. Как и нет самого этого метода.
Я просто для свойства TfrxAsaDataSet.Session (это аналог свойства TQuery.Databasename) написал соответствующие обработчики (TfrxAsaDataSet.SetSession, TfrxAsaDataSet.SetSessionName). Ну и PE для этого свойства тоже сделал.
Свойство Session это ссылка на компонент TASASession (аналог TDataBase), т.е. фактически это и есть твоя строка коннекта.
И я могу ей присваивать как ссылку на "внутрению базу" (TfrxAsaSession - в FR), так и на внешнию базу (TASASession в Delphi).
Это нормально, советую сразу оставить надежду на какую-то помощь от разработчиков. Ошибки, которые я нашел (и прислал код с исправлениями)в серверных компонентах два с лишним года назад (еще в 3-й версии) до сих пор не исправлены, на письма разработчикам, в форум и лично М. Филиппенко поимел только обещания все поправить в ближайшее время. Видимо, 2.5 года - еще не ближайшее время
Вот здесь я на форуме об этом писал
[url="http://fast-report.com/ru/forum/index.php?showtopic=4130&st=0&p=15199�entry15199" ] http://fast-report.com/ru/forum/index.php?...5533;entry15199[/url]
[url="http://fast-report.com/ru/forum/index.php?showtopic=4639&st=0&p=17030�entry17030" ] http://fast-report.com/ru/forum/index.php?...5533;entry17030[/url]