Явный коннект к БД
Хочется странного. Есть база MSSQL, есть пакет программ который работает с четко указанной базой, настройки по соединению с которой хранятся в реестре. Тип соединения ADO.
Соответственно отчеты хранятся в БД, есть желание чтобы клиенты сами могли строить отчеты и сохранять их в БД.
Для этого необходимо чтобы стандартные компоненты ADO в FR использовали бы четко указанный TADOConnection из программы, а не создавали бы свою копию данного объекта, а так же чтобы у них небыло возможности изменить свойства коннекта. Т.е TfrxADODatabase при дизайне отчета четко бы указывал на объект TADOConnection в программе, без возможности изменения каких либо своих свойств.
Таким образом пользователь бросает на форму коннекшн и присоединияет к нему TfrxADOQuery не устанавливая никаких свойств коннекта, используется коннект из программы.
Пока все что приходит в голову это свой набор компонентов доступа, аналог frxADOComponents, но несколько модифицированный. Но не совсем понятно как передать в создаваемый объект TfrxADODatabase.FDatabase свой TADOConnection.
Хотя может быть есть какие-то более красивые варианты?
Соответственно отчеты хранятся в БД, есть желание чтобы клиенты сами могли строить отчеты и сохранять их в БД.
Для этого необходимо чтобы стандартные компоненты ADO в FR использовали бы четко указанный TADOConnection из программы, а не создавали бы свою копию данного объекта, а так же чтобы у них небыло возможности изменить свойства коннекта. Т.е TfrxADODatabase при дизайне отчета четко бы указывал на объект TADOConnection в программе, без возможности изменения каких либо своих свойств.
Таким образом пользователь бросает на форму коннекшн и присоединияет к нему TfrxADOQuery не устанавливая никаких свойств коннекта, используется коннект из программы.
Пока все что приходит в голову это свой набор компонентов доступа, аналог frxADOComponents, но несколько модифицированный. Но не совсем понятно как передать в создаваемый объект TfrxADODatabase.FDatabase свой TADOConnection.
Хотя может быть есть какие-то более красивые варианты?
Комментарии
Хм... А зачем вообще это делать? Вот, в приложении вы положили куда-то там компонент TfrxADOComponents, чтобы ADO стали доступны в дизайнере отчётов. Наверняка установили ему свойство DefaultDatabase, указав ADOConnection, используемый вашей программой. Ну и больше не надо ни чего. Теперь в дизайнере отчётов все ADOTable и ADOQuery, которые пользователи кинут в отчёт, автоматически будут настроены на тот-же коннект, что и вся прога. Правда они также смогут кинуть ещё и ADOConnect и настроить его как хотят, но тогда это будут уже их проблемы (а может действительно сильно понадобится).
Или я чего-то не правильно понял?
Т.е Ваш вариант в принципе подходит при условии отсутствия на панели компонента TfrxADODatabase и автоматическому использованию всеми кверями указанного в TADOComponents.
Ну в общем тоже не проблема. В приложении назначьте обработчик события frxDesigner.OnInsertObject с таким кодом:
В этом случае в дизайнере компонент будет виден, но добавить его пользователи не смогут. Зато можно разрулить это дело по правам доступа (кому-то можно, кому-то нет). А вот совсем убрать ADODatabase из дизайнера без модификации исходников FR наверно не получится. Хотя как знать, я не особо копался.