![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
передать параметр в IBDataSet [D7, FB]
mr.il © (2006-05-16 10:41:00)Есть запрос:
select *
from PERSONS pers
where upper(pers.PERSON) like upper(:PERS_Name) or
:PERS_Name = 'ALL'
order by pers.PERSON
передаю параметр
IBDS_PERSONS.Close;
IBDS_PERSONS.Params.ByName('PERS_Name').AsString := 'ALL';
IBDS_PERSONS.Open;
а в ответ: "Incorrect values within SQLDA structure".
Весь хелп перерыл понять ошибку не могу.
Johnmen (2006-05-16 16:06:00) [1]Params or Parameters property to assign values to a parameter based on the parameter’s ordinal position within the SQL statement.
Это прямой намёк.
mr.il (2006-05-16 15:39:00) [2]Johnmen © (16.05.06 14:22) [5]
>Надо это включить в фак.
Зачем из хелпа в фак?
Может я не то читаю, но в хелпе по TIBXSQLDA ничего не сказано про "гемор" с повторным использованием параметра в запросе.
ANB © (16.05.06 14:58) [6]
ЗЫ. Вот всегда считал, что лучше ораклом пользоваться.
А если это небольшой проект?
Desdechado (2006-05-16 15:39:00) [3]ANB © (16.05.06 14:58) [6]
дело не в СУБД, а в особенностях реализации отдельных компонентов
некоторые из них считают, что нужно все одноименные параметры присваивать скопом, некоторые - только первый попавшийся
ANB (2006-05-16 14:58:00) [4]ЗЫ. Вот всегда считал, что лучше ораклом пользоваться.
Johnmen (2006-05-16 14:22:00) [5]>Надо это включить в фак.
Зачем из хелпа в фак?
mr.il (2006-05-16 14:07:00) [6]Desdechado © писал
есть подозрение, что параметров 2, хоть и с одинаковым именем...
Оказалось, в точку. Блин так не очевидно. Искал решение проблемы в одном месте, а оказалось проблема в другом. Надо это включить в фак.
where upper(pers.PERSON) like upper(:PERS_Name) or
:PERS_Name1 = 'ALL'
.....
IBDS_PERSONS.Params.ByName('PERS_Name').AsString := 'ALL';
IBDS_PERSONS.Params.ByName('PERS_Name1').AsString := 'ALL';
Sergey13 (2006-05-16 11:00:00) [7]У меня вот так прошло вроде
select *
from PERSONS pers
where upper(pers.PERSON) like upper(:PERS_Name) or :PERS_Name = cast('ALL' as varchar(30))
Desdechado (2006-05-16 10:49:00) [8]есть подозрение, что параметров 2, хоть и с одинаковым именем
и что присваивать значение нужно обоим
Sergey13 (2006-05-16 10:45:00) [9]IBDS_PERSONS.Params. ParamByName('PERS_Name').AsString := 'ALL';