Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Передача строкового параметра   Найти похожие ветки 

 
Бульбаш   (2005-09-28 15:06) [0]

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


 
Johnmen ©   (2005-09-28 15:18) [1]

Целиком запрос ?
В эксперте можно задавать параметры запроса ?


 
Бульбаш   (2005-09-28 15:23) [2]

select a.id,a.name,a.sklad,a.edi,a.gruppa,a.tip,
a.massa,a.uggr,a.ss,a.ku,a.dv,a.sg,a.uslxr,a.xar,
a.tsenp,a.nacp,a.nac,a.nds,a.nsr,a.tsena,
b.name n_edi,"¹"||c.id||" "||c.name n_sklad
from kart a,edizm b,sklad c
where a.edi=b.id
 and a.sklad=c.id
 and a.id=iif(:p1,:p1,a.id)
 and a.tip=iif(:p2,:p2,a.tip)
 and a.sklad=iif(:p3,:p3,a.sklad)
 and longrupper(a.name) like :p4


 
Johnmen ©   (2005-09-28 15:25) [3]

Ну так понятно. У тебя 7 (семь) параметров :)))
Т.к. напр. p1 и p1 это разные параметры !


 
Курдль ©   (2005-09-28 15:27) [4]

Строковые параметры внутри запроса должны выделяться кавычками. У тебя же - выделяются процентами. Попробуй "%%" передать в параметр вместе с (")


 
Бульбаш   (2005-09-28 15:36) [5]

Не думаю что идет дублирование параметров, этот же код отлично работает с Oracle; Почему то не передается только строковый параметр, так как при удалении этоого условия запрос отрабатывает без проблем. Так же нормально отрабатывает запрос в Expert-е. Проблема как правильно передать строковый параметр (кавычки не проходят)


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

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


 
Johnmen ©   (2005-09-28 15:47) [7]

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


 
sniknik ©   (2005-09-28 16:05) [8]

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


 
Os ©   (2005-09-28 16:08) [9]

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


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

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

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


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


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


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


 
Desdechado ©   (2005-09-28 16:30) [12]

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


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

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

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


 
sniknik ©   (2005-09-28 16:33) [14]

> В смысле ? что нормально ?
можно хоть 10 одноименных задать, все получат значение (одинаковое) от единственного присвоения (по имени).
а вот до обращения по номеру не досмотрел. ;)
если по номеру то одноименные будут равны по значению первого в списке неважно задавалось ему значение или нет.
(недавно проверял http://delphimaster.net/view/2-1125325409/)


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


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


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

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


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

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

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


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


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


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


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

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:46) [19]

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


 
Johnmen ©   (2005-09-28 16:46) [20]

>Бульбаш

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


 
Desdechado ©   (2005-09-28 16:57) [21]

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


 
sniknik ©   (2005-09-28 17:02) [22]

> если по номеру то одноименные будут равны по значению первого в списке неважно задавалось ему значение или нет.
соврал сорри, на самом деле все примут значение последнего присвоенного.
т.е. модифицируя код в ссылке, на такой к примеру
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;

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


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

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


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

См [19]  :-)


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

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.046 c
9-1119442278
Lostcoder
2005-06-22 16:11
2005.11.06
Зеркальное отражение


8-1117980186
-=Germe$=-
2005-06-05 18:03
2005.11.06
Визуализация речи...


2-1128675935
Viktop
2005-10-07 13:05
2005.11.06
Поиск любого слова в базе


9-1118349447
Кефир87
2005-06-10 00:37
2005.11.06
Collision check -> Sphere vs World -> Реализация


3-1127748273
avsam
2005-09-26 19:24
2005.11.06
Свой TQuery





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский