-
Имеются вот такие запросы: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 не нашел выбора кодировки. Подскажите, где это найти или как еще можно нормально передавать параметр -
Каким образом видны кракозябры в значении параметра?
-
> Каким образом видны кракозябры в значении параметра?
добавил ADOQSn.Parameters[0].Value в Watch List. После строки присвоения значения параметру стоит BreakPoint. В Watch List показывается значение с кракозябрами. Значение IBQ.FieldByName('selfnumber').AsString показывается корректно -
Медвежонок Пятачок © (03.02.09 11:05) [3]А если
ADOQSn.Parameters[0].Value:= 'мама мыла раму'; -
> А если
>
> ADOQSn.Parameters[0].Value:= 'мама мыла раму';
ADOQSn.Parameters[0].Value: '<0<0 <K;0 @0<C' -
> '<0<0 <K;0 @0<C'
Любопытно... -
Какой DataType?
-
Медвежонок Пятачок © (03.02.09 11:11) [7]значит адо ему выставило какой-то етакий тип
-
> Какой DataType?
и в FireBird и в DB2 - VARCHAR(50) -
Какой DataType у параметра?
-
> Какой DataType у параметра?
пробовал поставить ftString и ftWideString. Результат одинаковый. -
Есть предположение, что дело в неявном определении параметров параметра на основании данных подключаемой БД и используемого провайдера.
Соответственно, надо смотреть туда... -
использую Provider=IBMDADB2.1. Интересно, где бы у него это посмотреть :о)
-
Anatoly Podgoretsky © (03.02.09 12:00) [13]
> pavel_guzhanov © (03.02.09 11:20) [10]
>
> > Какой DataType у параметра?
>
>
> пробовал поставить ftString и ftWideString. Результат одинаковый.
>
Услышим ли мы ответ? -
До подключенияADOQSn.ParamCheck := False;
? -
> До подключения
> ADOQSn.ParamCheck := False;
> ?
в свойствах стояло true. изменил на false, стала выскакивать ошибка на ADOQSn.Open; -
> Услышим ли мы ответ?
Дядя Толя, ты ведь наверняка знаешь, в чем тут проблема. Мож подскажешь? :о) -
Anatoly Podgoretsky © (03.02.09 13:38) [17]Вокруг одни партизаны.
-
Anatoly Podgoretsky © (03.02.09 13:39) [18]
> стала выскакивать ошибка на ADOQSn.Open;
Скажи чтобы не ругал(а)ся. -
> в свойствах стояло 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 := ....
И попробуй, что будет. -
> И попробуй, что будет.
Все так же, без изменений -
alexclerk (04.02.09 18:56) [21]Ситуация один-в-один. даже кракозяблы похожи. Скажите как с этим бороться?