Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
ВнизСтранно передается параметр в запрос Найти похожие ветки
← →
pavel_guzhanov © (2009-02-03 10:27) [0]Имеются вот такие запросы:
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 не нашел выбора кодировки. Подскажите, где это найти или как еще можно нормально передавать параметр
← →
Johnmen © (2009-02-03 10:52) [1]Каким образом видны кракозябры в значении параметра?
← →
pavel_guzhanov © (2009-02-03 10:59) [2]
> Каким образом видны кракозябры в значении параметра?
добавил ADOQSn.Parameters[0].Value в Watch List. После строки присвоения значения параметру стоит BreakPoint. В Watch List показывается значение с кракозябрами. Значение IBQ.FieldByName("selfnumber").AsString показывается корректно
← →
Медвежонок Пятачок © (2009-02-03 11:05) [3]А если
ADOQSn.Parameters[0].Value:= "мама мыла раму";
← →
pavel_guzhanov © (2009-02-03 11:08) [4]
> А если
>
> ADOQSn.Parameters[0].Value:= "мама мыла раму";
ADOQSn.Parameters[0].Value: "<0<0 <K;0 @0<C"
← →
Ega23 © (2009-02-03 11:10) [5]
> "<0<0 <K;0 @0<C"
Любопытно...
← →
Johnmen © (2009-02-03 11:11) [6]Какой DataType?
← →
Медвежонок Пятачок © (2009-02-03 11:11) [7]значит адо ему выставило какой-то етакий тип
← →
pavel_guzhanov © (2009-02-03 11:13) [8]
> Какой DataType?
и в FireBird и в DB2 - VARCHAR(50)
← →
Johnmen © (2009-02-03 11:14) [9]Какой DataType у параметра?
← →
pavel_guzhanov © (2009-02-03 11:20) [10]
> Какой DataType у параметра?
пробовал поставить ftString и ftWideString. Результат одинаковый.
← →
Johnmen © (2009-02-03 11:25) [11]Есть предположение, что дело в неявном определении параметров параметра на основании данных подключаемой БД и используемого провайдера.
Соответственно, надо смотреть туда...
← →
pavel_guzhanov © (2009-02-03 11:32) [12]использую Provider=IBMDADB2.1. Интересно, где бы у него это посмотреть :о)
← →
Anatoly Podgoretsky © (2009-02-03 12:00) [13]
> pavel_guzhanov © (03.02.09 11:20) [10]
>
> > Какой DataType у параметра?
>
>
> пробовал поставить ftString и ftWideString. Результат одинаковый.
>
Услышим ли мы ответ?
← →
Ega23 © (2009-02-03 12:10) [14]До подключения
ADOQSn.ParamCheck := False;
?
← →
pavel_guzhanov © (2009-02-03 13:14) [15]
> До подключения
> ADOQSn.ParamCheck := False;
> ?
в свойствах стояло true. изменил на false, стала выскакивать ошибка на ADOQSn.Open;
← →
pavel_guzhanov © (2009-02-03 13:18) [16]
> Услышим ли мы ответ?
Дядя Толя, ты ведь наверняка знаешь, в чем тут проблема. Мож подскажешь? :о)
← →
Anatoly Podgoretsky © (2009-02-03 13:38) [17]Вокруг одни партизаны.
← →
Anatoly Podgoretsky © (2009-02-03 13:39) [18]
> стала выскакивать ошибка на ADOQSn.Open;
Скажи чтобы не ругал(а)ся.
← →
Ega23 © (2009-02-03 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 © (2009-02-03 15:37) [20]
> И попробуй, что будет.
Все так же, без изменений
← →
alexclerk (2009-02-04 18:56) [21]Ситуация один-в-один. даже кракозяблы похожи. Скажите как с этим бороться?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.045 c