Добрый день, При редактировании сервиса ADOConnection можно вызвать стандартное диалоговое окно для формирования строки соединения. Вопрос - есть ли в Террасофт функция для вызова этого окна из своего скрипта и получения сформированной пользователем строки соединения?
Нравится
Добрый день, Валерий!
Такая функция в объектах Terrasoft наружу не вынесена. Она есть только в дизайнере ADOConnection. Но это не означает, что ее нельзя сделать. Её реализация очень простая. Смотрите пример реализации в прикрепленном Delphi проекте. Для использования созданного объекта достаточно зарегистрировать библиотеку как [font=monospace]regsvr32.exe ADOUtilsLibrary.dll[/font] в командной строке, и после этого в коде можно вызывать так:
function Main() { var Utils = new ActiveXObject('ADOUtilsLibrary.Utils'); Log.Write(2, Utils.PromptDataSource(0, '')); }
В качестве первого параметра передается дескриптор родительского окна. Его желательно взять из текущего окна из свойства Handle. Второй параметр - текущее значение строки соединения.
Здравствуйте!
Еще один вариант, без создания библиотеки:
function Main() { var dataLinks = new ActiveXObject('DataLinks'); var ConnectionString = dataLinks.PromptNew(); Connector.Log.Write(1, ConnectionString); }
Спасибо, Александр,
Только видимо в данном случае PromptNew возвращает не строку соединения, а само подключение, то есть использовать следует так:
var adoCon = Services.GetNewItemByUSI('MyADOConnection'); var dataLinks = new ActiveXObject('DataLinks'); var adoCon.ConnectionObject = dataLinks.PromptNew(); // и для редактирования var dataLinks = new ActiveXObject('DataLinks'); dataLinks.PromptEdit(adoCon.ConnectionObject);