27.12.2005, 12:15 | #1 |
Участник
|
В принципе весь вопрос в теме...
Возможно ли вызвать свой обработчик ошибок? А то вываливается по ошибке и весь остальной код не фурычит... :-(
__________________
YEP! тел. (905) 561-94-00 |
|
27.12.2005, 12:41 | #2 |
Участник
|
Если речь идет о Navision, то можно писать функции в кодеюнитах, где делать вызов необходимых процедур, форм, отчетов, датапортов и там перехватывать их выполнение.
__________________
Вот такие, брат, дела! |
|
27.12.2005, 13:02 | #3 |
Участник
|
Ok!
Делаю так: 1. создаю кодеюнит с единственной глобальной типа атомэшн (ADO.Connect) и с одной функцией: Код: Init(InConnectionString : Text[1000]) Ok : Boolean // используем строку соединения по умолчанию, если передано пустое значение IF InConnectionString = '' THEN InConnectionString := ConnectionString; CREATE(Conn); Conn.Open(InConnectionString); EXIT(TRUE); Код: OnRun() MESSAGE(FORMAT(Conn.Init(''))); MESSAGE('далее...'); ЧТО ДЕЛАТЬ? З.Ы. Читаю "Средства интеграции Navision": Цитата:
п.5.5.
... Ограничения ... * Обработка исключений (Exeption Handling). Среда C/SIDE не позволяет извлекать информацию об исключениях... (и т.д.) ... Имеются пути обхода данного ограничения.
__________________
YEP! тел. (905) 561-94-00 |
|
27.12.2005, 13:28 | #4 |
Участник
|
А если написать
Код: CREATE(Conn); IF Conn.Open(InConnectionString) THEN EXIT(TRUE); EXIT(FALSE); |
|
27.12.2005, 13:32 | #5 |
Участник
|
C удовольствием бы так написал, но метод Open у объекта ADO.Connection не возвращает ничего... VOID однако...
__________________
YEP! тел. (905) 561-94-00 |
|
27.12.2005, 13:49 | #6 |
Участник
|
Эххх... а так хотелось верить.
Дествительно интересно что же тут делать... А что за InConnectionString? может его сначала проверить на правильность? |
|
27.12.2005, 14:07 | #7 |
Участник
|
Цитата:
Я ввел ЗАВЕДОМО неправильную строку соединения! :-) Обошел пока эту проблему... Т.к. мне нужен один коннект на все время сессии, то сделал проще: В триггер LogInStart (в самый конец его, чтобы все остальное отработало) вставил переменную ConnADO с типом кодеюнит ConnADO, где уже 2 переменные Conn (тип ADO.Connection) и IsConnected (Boolean) и 2 метода Init и Connected Код: Init(InConnectionString : Text[1024]) Ok : Boolean CLEAR(Conn); IsConnected := FALSE; // используем строку соединения по умолчанию, если передано пустое значение IF InConnectionString = '' THEN InConnectionString := ConnectionString; // в случае ошибки при соединении IsConnected так и останется FALSE CREATE(Conn); Conn.Open(InConnectionString); IsConnected := TRUE; Connected() Ok : Boolean EXIT(IsConnected); З.Ы. SingleInstance у кодеюнита ConnADO стоит в <Yes> дабы не переконнекчиваться каждый раз для получения данных из внешней базы... Время оно не резиновое :-)
__________________
YEP! тел. (905) 561-94-00 |
|
27.12.2005, 14:15 | #8 |
Участник
|
Может так:
Код: OnRun() if Conn.Init('') then MESSAGE('Да'); MESSAGE('далее...'); |
|
27.12.2005, 14:20 | #9 |
Участник
|
Пробовал... даже MESSAGE('Да') уже не выполняется...
__________________
YEP! тел. (905) 561-94-00 |
|
27.12.2005, 14:28 | #10 |
Участник
|
блин глючу
вот так CU 50000 OnRun() Conn.Init(''); в любом месте например в другом CU if cu50000.run then; MESSAGE('далее...'); Параметр строки соединения можеш закидавать через доп ф-ю котрая будет устанавливать глобальную переменную. |
|
27.12.2005, 15:31 | #11 |
Участник
|
СУПЕР! Спасибо большое! Работает... :-)
__________________
YEP! тел. (905) 561-94-00 |
|