powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Обработка ошибок DSO в Delphi
2 сообщений из 2, страница 1 из 1
Обработка ошибок DSO в Delphi
    #32675187
MegaRodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В процессе программного создания кубов через 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 уже не удаётся...

Кто-нибудь сталкивался с подобными проблемами?
...
Рейтинг: 0 / 0
Обработка ошибок DSO в Delphi
    #32679320
MegaRodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё оказалось достаточно просто:

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 .
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Обработка ошибок DSO в Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]