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

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

Передача строкового параметра [D7]


Страницы:   1 2

Бульбаш ©   (2005-09-28 15:06:00) 

Пришлось на время отказаться от Oracle и заняться Firebird. Использую FIB+. Столкнулся со следующей проблемой. В запросе ранее использовал выборку типа: ...and upper(a.name) like :p4. Параметр передавал кодом: DM.Kart.Params[3].AsString:='%%'. При попытке открытия набора вываливается по ошибке: conversion error from string "%%" (error code -303). Подскажите светлую мысль в чем дело, ибо в IB Expert запрос выполняется без проблем (поле Varchar)


Бульбаш   (2005-09-28 17:27:00) [1]

Тормознул, кавычки в имени параметра не поставил. Все завертелось. ВСЕМ СПАСИБО!!! :)


Курдль   (2005-09-28 17:26:00) [2]

См [19]  :-)


Бульбаш   (2005-09-28 17:20:00) [3]

Пардон, что-то глюкануло, только сейчас все ответы увидел. Спасибо,действительно: продублировал присвоение параметров и все заработало. В ODAC все таки покрасивее было. Подскажите плиз как можно в таком случае задать параметры не по номеру, а по имени, пробую:
DM.Kart.ParamByName(p0).AsInteger:=0 материт - неправильное имя параметра...


sniknik   (2005-09-28 17:02:00) [4]

> если по номеру то одноименные будут равны по значению первого в списке неважно задавалось ему значение или нет.
соврал сорри, на самом деле все примут значение последнего присвоенного.
т.е. модифицируя код в ссылке, на такой к примеру
select SEANS, :DT AS DT, :DT AS DT1, :DT AS DT2, :DT AS DT3 from DATA.DBF
where SEANS = :DT

и выполняя
//Query1.ParamByName('DT').AsInteger:= 2;
Query1.Params[1].AsInteger:= 0;
Query1.Params[0].AsInteger:= 1;
Query1.Params[2].AsInteger:= 2;
Query1.Open;

получим четыре столбца двоек


Desdechado   (2005-09-28 16:57:00) [5]

> Имеется в виду "все подряд"
для этого достаточно одного знака процента


Johnmen   (2005-09-28 16:46:00) [6]

>Бульбаш

Ты ответы читаешь, или они тебе не нужны ?
DM.Kart.Params[6].AsString:='%%';


Курдль   (2005-09-28 16:46:00) [7]

Для чистоты экскремента предлагаю конструкцию ParamByName('P1').AsString = '''%%''';(три апострофа!)


Бульбаш   (2005-09-28 16:39:00) [8]

DM.Kart.Close;
DM.Kart.Params[0].AsInteger:=0;  DM.Kart.Params[1].AsInteger:=0;
DM.Kart.Params[2].AsInteger:=0;  DM.Kart.Params[3].AsString:='%%';
DM.Kart.Open;

%% - любое значение поля. При задании фильтра по полю ранее использовал код :DM.Kart.Params[3].AsString:='%'+AnsiUpperCase(Edit2.Text)+'%';


Курдль   (2005-09-28 16:39:00) [9]


> два процента подряд что означают?


Это маска оператора like. Имеется в виду "все подряд" или "маска не задана".


Johnmen   (2005-09-28 16:37:00) [10]

>Курдль ©   (28.09.05 16:34) [15]

Я имел в виду присвоение значений параметрам. Уже существующим.


Курдль   (2005-09-28 16:34:00) [11]


> Как присваиваются ? Код.


Например, для компонентов SqlDirect:

SDQuery.Parameters.Add("P1", sbjID);


sniknik   (2005-09-28 16:33:00) [12]

> В смысле ? что нормально ?
можно хоть 10 одноименных задать, все получат значение (одинаковое) от единственного присвоения (по имени).
а вот до обращения по номеру не досмотрел. ;)
если по номеру то одноименные будут равны по значению первого в списке неважно задавалось ему значение или нет.
(недавно проверял http://www.delphimaster.ru/cgi-bin/forum.pl?id=1125325409&n=18)


Johnmen   (2005-09-28 16:30:00) [13]

>Курдль ©   (28.09.05 16:26) [11]
>значения все равно им присваиваются одинаковые.

Как присваиваются ? Код.


Desdechado   (2005-09-28 16:30:00) [14]

в БДЕ одноименные параметры - разные
а присвоение по имени присваивает только первый встреченный с таким именем
для FIB+ возможен похожий вариант
аргумент "с Оракл работает" не катит, ибо компоненты другие
два процента подряд что означают?


Курдль   (2005-09-28 16:26:00) [15]


> Johnmen ©   (28.09.05 16:15) [10]
> В БДЕ это тоже 7 параметров... И обращается он к ним по номеру...


Я бы так категорично не заявлял! Для тех компонентов, что я обычно использовал, это 4 параметра! Даже если они в списке параметров дизайн-тайма (при просмотре в инспекторе объектов) дублируются, значения все равно им присваиваются одинаковые. Про IB не уверен на 100%, но на 80% - пожалуй!


Johnmen   (2005-09-28 16:15:00) [16]

>sniknik ©   (28.09.05 16:05) [8]
>> Ну как знаешь... Тебя предупредили...
>для BDE нормально. для > Использую FIB+
>может тоже?... хотя сомнительно.

В смысле ? что нормально ?
В БДЕ это тоже 7 параметров... И обращается он к ним по номеру...


Os   (2005-09-28 16:08:00) [17]

Параметров 7.
Вставь пустой TIBQuery, перемести туда свой запрос и посмотри свойство Params


sniknik   (2005-09-28 16:05:00) [18]

Johnmen ©   (28.09.05 15:47) [7]
> Ну как знаешь... Тебя предупредили...
для BDE нормально. для > Использую FIB+
может тоже?... хотя сомнительно.


Johnmen   (2005-09-28 15:47:00) [19]

Ну как знаешь... Тебя предупредили...


Курдль   (2005-09-28 15:46:00) [20]

Двойные кавычки не проходят - попробуй одинарные! Помню, что где-то на эти грабли с like нарывался! Именно с '%%'!


Страницы:   1 2

Наверх

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