![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странно передается параметр в запрос [D7, FireBird 1.5.4, DB2]
pavel_guzhanov © (2009-02-03 10:27:00)Имеются вот такие запросы:
IBQ.SQL.Add('select selfnumber from naturals');IBQ - это FireBird, ADOQSn - DB2.
ADOQSn.SQL.Add('select id, selfnumber from "FORM"."PERSON" where selfnumber=:s');
В качестве параметра в ADOQSn передаю значение из IBQ
ADOQSn.Parameters[0].Value:=IBQ.FieldByName('selfnumber').AsString;
Вроде бы все должно работать нормально. Но в отладчике вижу, что при IBQ.FieldByName('selfnumber').AsString равным например 10НПО2345 в параметре у ADOQSn вместо русских букв получаются кракозябры. Понятно, что где-то не выбрана кодировка. У FireBird lc_ctype=WIN1251. Наверное неправильная кодировка у ADO. В настройках ADOConnection не нашел выбора кодировки. Подскажите, где это найти или как еще можно нормально передавать параметр
alexclerk (2009-02-04 18:56:00) [1]Ситуация один-в-один. даже кракозяблы похожи. Скажите как с этим бороться?
pavel_guzhanov (2009-02-03 15:37:00) [2]
> И попробуй, что будет.
Все так же, без изменений
Ega23 (2009-02-03 13:57:00) [3]
> в свойствах стояло 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 := ....
И попробуй, что будет.
Anatoly Podgoretsky (2009-02-03 13:39:00) [4]
> стала выскакивать ошибка на ADOQSn.Open;
Скажи чтобы не ругал(а)ся.
Anatoly Podgoretsky (2009-02-03 13:38:00) [5]Вокруг одни партизаны.
pavel_guzhanov (2009-02-03 13:18:00) [6]
> Услышим ли мы ответ?
Дядя Толя, ты ведь наверняка знаешь, в чем тут проблема. Мож подскажешь? :о)
pavel_guzhanov (2009-02-03 13:14:00) [7]
> До подключения
> ADOQSn.ParamCheck := False;
> ?
в свойствах стояло true. изменил на false, стала выскакивать ошибка на ADOQSn.Open;
Ega23 (2009-02-03 12:10:00) [8]До подключения
ADOQSn.ParamCheck := False;
?
Anatoly Podgoretsky (2009-02-03 12:00:00) [9]
> pavel_guzhanov © (03.02.09 11:20) [10]
>
> > Какой DataType у параметра?
>
>
> пробовал поставить ftString и ftWideString. Результат одинаковый.
>
Услышим ли мы ответ?
pavel_guzhanov (2009-02-03 11:32:00) [10]использую Provider=IBMDADB2.1. Интересно, где бы у него это посмотреть :о)
Johnmen (2009-02-03 11:25:00) [11]Есть предположение, что дело в неявном определении параметров параметра на основании данных подключаемой БД и используемого провайдера.
Соответственно, надо смотреть туда...
pavel_guzhanov (2009-02-03 11:20:00) [12]
> Какой DataType у параметра?
пробовал поставить ftString и ftWideString. Результат одинаковый.
Johnmen (2009-02-03 11:14:00) [13]Какой DataType у параметра?
pavel_guzhanov (2009-02-03 11:13:00) [14]
> Какой DataType?
и в FireBird и в DB2 - VARCHAR(50)
Медвежонок Пятачок (2009-02-03 11:11:00) [15]значит адо ему выставило какой-то етакий тип
Johnmen (2009-02-03 11:11:00) [16]Какой DataType?
Ega23 (2009-02-03 11:10:00) [17]
> '<0<0 <K;0 @0<C'
Любопытно...
pavel_guzhanov (2009-02-03 11:08:00) [18]
> А если
>
> ADOQSn.Parameters[0].Value:= 'мама мыла раму';
ADOQSn.Parameters[0].Value: '<0<0 <K;0 @0<C'
Медвежонок Пятачок (2009-02-03 11:05:00) [19]А если
ADOQSn.Parameters[0].Value:= 'мама мыла раму';
pavel_guzhanov (2009-02-03 10:59:00) [20]
> Каким образом видны кракозябры в значении параметра?
добавил ADOQSn.Parameters[0].Value в Watch List. После строки присвоения значения параметру стоит BreakPoint. В Watch List показывается значение с кракозябрами. Значение IBQ.FieldByName('selfnumber').AsString показывается корректно