Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обработка ошибок 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 уже не удаётся... Кто-нибудь сталкивался с подобными проблемами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2004, 12:54 |
|
||
|
Обработка ошибок 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 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2004, 13:35 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=49&tid=1872282]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 269ms |
| total: | 379ms |

| 0 / 0 |
