Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.09.2004, 12:54
|
|||
|---|---|---|---|
|
|||
Обработка ошибок DSO в Delphi |
|||
|
#18+
В процессе программного создания кубов через DSO иногда возникают исключения. Как определить их причину? В DSO_TLB.pas приведены возможные коды ошибок (ErrorCodes), но что-то ни в одном из интерфейсов эти коды не используются... Может быть нужно использовать событийный интерфейс IDatabaseEvents? Тогда возникает закономерный вопрос как и куда его прицепить : 1) Делаю объект, реализующий интерфейс (tmpObj) 2) Получаю dsoDB : MDStore 3) Пытаюсь прицепить интерфейс (примерно так) var CPC: IConnectionPointContainer; CP: IConnectionPoint; Connection : integer; begin Connection := 0; if Succeeded(dsoDB.QueryInterface(IConnectionPointContainer, CPC)) then if Succeeded(CPC.FindConnectionPoint(IID__IDatabaseEvents, CP)) then CP.Advise(tmpObj, Connection); IConnectionPointContainer запрашивается нормально, т.е. какие-то события MDStore таки поддерживает, а вот найти точку подключения для IID__IDatabaseEvents уже не удаётся... Кто-нибудь сталкивался с подобными проблемами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
03.09.2004, 13:35
|
|||
|---|---|---|---|
|
|||
Обработка ошибок DSO в Delphi |
|||
|
#18+
Всё оказалось достаточно просто: 1) Коды ошибок можно вытащить из исключений, например так: var E : TObject; .... try // Работа с объектами DSO except E := ExceptObject; if (E is EOleSysError) then AddErrToLog(ErrLog, format('%s : %s', [ResolveDSOError(EOleSysError(E).ErrorCode), EOleSysError(E).Message]) + #13#10); end; где ResolveDSOError - ф-я переводящая код ошибки в текстовое представление 2) Событийные интерфейс работает только при процессинге, т.е. максимум что можно сделать - это аналог окошка Analysis Manager'a (где показывается ход процессинга). Кстати, цеплять надо не IID__IDatabaseEvents , а DIID___Database . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=Idler&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 691ms |
| total: | 860ms |

| 0 / 0 |
