Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Странно передается параметр в запрос [D7, FireBird 1.5.4, DB2]


Страницы:   1 2

pavel_guzhanov ©   (2009-02-03 10:27:00) 

Имеются вот такие запросы:
 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 не нашел выбора кодировки. Подскажите, где это найти или как еще можно нормально передавать параметр


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 показывается корректно


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо