Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Acrive Directory + ADO [D7, Acrive Directory]


Юрий Зотов ©   (12.01.18 12:07

Через ADO получаю данные из Acrive Directory таким образом:

AdoQuery1.SQL.Text := ...;
AdoQuery1.Parameters.ParamByName(...).Value := ...;
AdoConnnection1.Connected := True;
AdoQuery1.Open;

На последней строке (точнее, при Recordset.Open в модуле ADODB) возникает EOleException: "Интерфейс не поддерживается" (именно на русском языке). При этом программа не вылетает, а вполне правильно работает (хотя перехвата исключений в ней нет).

Никто не сталкивался с таким безобразием? Хочется же избежать ошибок, а не получается.


sniknik ©   (12.01.18 21:27[1]

вместо AdoQuery1 AdoCommand и работать(понимать что пришло) с полученными данными самому... там фигня в том что вместо рекордсета приходит простое текстовое сообщение, об ошибке например в самом AD, что естественно никоим боком не интерфейс от рекордсета, но и эксепт, т.к. все типа нормально отработало... а то, что вы там ожидаете не то что мы посылает, это ваши проблемы.


Юрий Зотов ©   (16.01.18 09:47[2]

Справился на основе долгого гугления. Делюсь - может, кому пригодится...

1. Убрал параметры, подставив их значения в текст запроса.
2. Отключил ParamCheck.

И заработало как надо.


Юрий Зотов ©   (16.01.18 11:43[3]

Вообще, в модуле ADODB для D7 явный баг (слева - номера строк).

2363 OLEDBCommand.QueryInterface(ICommandWithParameters, OLEDBParameters);
2364 OLEDBParameters.SetParameterInfo(0, nil, nil);
2365 if Assigned(OLEDBParameters) then ...


1. В строке 2363 запрашивается интерфейс OLEDBParameters.

2. Из строки 2365 видно, что этого интерфейса может и не быть (OLEDBParameters = nil).

3. Тем не менее, в строке 2364 без всякой проверки вызывается метод этого интерфейса.

4. Таким образом, в строке 2364 имеем шанс получить AV (что и наблюдается, если из запроса убрать параметры, но не отключать ParamCheck).

5. В Berlin этот баг исправлен. В других - не знаю, не копал.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо