Конференция "Базы" » Acrive Directory + ADO [D7, Acrive Directory]
 
  • Юрий Зотов © (12.01.18 12:07) [0]
    Через 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 этот баг исправлен. В других - не знаю, не копал.
 
Конференция "Базы" » Acrive Directory + ADO [D7, Acrive Directory]
Есть новые Нет новых   [118480   +43][b:0][p:0.001]