Конференция "Начинающим" » Странно передается параметр в запрос [D7, FireBird 1.5.4, DB2]
 
  • pavel_guzhanov © (03.02.09 10:27) [0]
    Имеются вот такие запросы:
     IBQ.SQL.Add('select selfnumber from naturals');
     ADOQSn.SQL.Add('select id, selfnumber from \"FORM\".\"PERSON\" where selfnumber=:s');

    IBQ - это FireBird, ADOQSn - DB2.

    В качестве параметра в ADOQSn передаю значение из IBQ
         
    ADOQSn.Parameters[0].Value:=IBQ.FieldByName('selfnumber').AsString;


    Вроде бы все должно работать нормально. Но в отладчике вижу, что при IBQ.FieldByName('selfnumber').AsString  равным например 10НПО2345 в параметре у ADOQSn вместо русских букв получаются кракозябры. Понятно, что где-то не выбрана кодировка. У FireBird lc_ctype=WIN1251. Наверное неправильная кодировка у ADO. В настройках ADOConnection не нашел выбора кодировки. Подскажите, где это найти или как еще можно нормально передавать параметр
  • Johnmen © (03.02.09 10:52) [1]
    Каким образом видны кракозябры в значении параметра?
  • pavel_guzhanov © (03.02.09 10:59) [2]

    > Каким образом видны кракозябры в значении параметра?


    добавил ADOQSn.Parameters[0].Value в Watch List. После строки присвоения значения параметру стоит BreakPoint. В Watch List показывается значение с кракозябрами. Значение IBQ.FieldByName('selfnumber').AsString показывается корректно
  • Медвежонок Пятачок © (03.02.09 11:05) [3]
    А если

    ADOQSn.Parameters[0].Value:= 'мама мыла раму';
  • pavel_guzhanov © (03.02.09 11:08) [4]

    > А если
    >
    > ADOQSn.Parameters[0].Value:= 'мама мыла раму';


    ADOQSn.Parameters[0].Value: '<0<0 <K;0 @0<C'
  • Ega23 © (03.02.09 11:10) [5]

    > '<0<0 <K;0 @0<C'


    Любопытно...
  • Johnmen © (03.02.09 11:11) [6]
    Какой DataType?
  • Медвежонок Пятачок © (03.02.09 11:11) [7]
    значит адо ему выставило какой-то етакий тип
  • pavel_guzhanov © (03.02.09 11:13) [8]

    > Какой DataType?

    и в FireBird и в DB2 - VARCHAR(50)
  • Johnmen © (03.02.09 11:14) [9]
    Какой DataType у параметра?
  • pavel_guzhanov © (03.02.09 11:20) [10]

    > Какой DataType у параметра?


    пробовал поставить ftString и ftWideString. Результат одинаковый.
  • Johnmen © (03.02.09 11:25) [11]
    Есть предположение, что дело в неявном определении параметров параметра на основании данных подключаемой БД и используемого провайдера.
    Соответственно, надо смотреть туда...
  • pavel_guzhanov © (03.02.09 11:32) [12]
    использую Provider=IBMDADB2.1. Интересно, где бы у него это посмотреть :о)
  • Anatoly Podgoretsky © (03.02.09 12:00) [13]

    > pavel_guzhanov ©   (03.02.09 11:20) [10]
    >
    > > Какой DataType у параметра?
    >
    >
    > пробовал поставить ftString и ftWideString. Результат одинаковый.
    >

    Услышим ли мы ответ?
  • Ega23 © (03.02.09 12:10) [14]
    До подключения
    ADOQSn.ParamCheck := False;


    ?
  • pavel_guzhanov © (03.02.09 13:14) [15]

    > До подключения
    > ADOQSn.ParamCheck := False;
    > ?

    в свойствах стояло true. изменил на false, стала выскакивать ошибка на ADOQSn.Open;
  • pavel_guzhanov © (03.02.09 13:18) [16]

    > Услышим ли мы ответ?

    Дядя Толя, ты ведь наверняка знаешь, в чем тут проблема. Мож подскажешь? :о)
  • Anatoly Podgoretsky © (03.02.09 13:38) [17]
    Вокруг одни партизаны.
  • Anatoly Podgoretsky © (03.02.09 13:39) [18]

    > стала выскакивать ошибка на ADOQSn.Open;

    Скажи чтобы не ругал(а)ся.
  • Ega23 © (03.02.09 13:57) [19]

    > в свойствах стояло true. изменил на false, стала выскакивать
    > ошибка на ADOQSn.Open;


    О!

    А теперь сделай так (начальная инициализация ADOQSn, до коннекта):


    ADOQSn.ParamCheck := False;
    ADOQSn.SQL.Text := 'select id, selfnumber from \"FORM\".\"PERSON\" where selfnumber=?';
    ADOQSn.Parameters.Clear;
    with ADOQSn.Parameters.AddParameter do
    begin
     Name := 'selfnumber';
       DataType := ftString;
       Direction := pdInput;
    end;
    ADOQSn.Connection := ....



    И попробуй, что будет.
  • pavel_guzhanov © (03.02.09 15:37) [20]

    > И попробуй, что будет.

    Все так же, без изменений
  • alexclerk (04.02.09 18:56) [21]
    Ситуация один-в-один. даже кракозяблы похожи. Скажите как с этим бороться?
 
Конференция "Начинающим" » Странно передается параметр в запрос [D7, FireBird 1.5.4, DB2]
Есть новые Нет новых   [134479   +13][b:0][p:0.001]