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

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

Одноименные параметры в Query [D5, XP]


De ©   (2006-03-17 16:55:00) 

Использую TADOQuery (q), в запросе несколько параметров с одинаковым именем (iParam), что сделает строка:
q.Parameters.ParamByName('iParam').Value := 1;
присвоит 1 всем параметрам с имененм iParam или только первому из них
если второй вариант то как грамотно присвоить значения всем параметрам?


Anatoly Podgoretsky   (2006-03-17 21:28:00) [1]

Имена это алиасы для массива параметров.
запрос посылаемый на сервер выглядит так
select * from table1 where _f1=? and _f2=?
Так что никакиъ имен нет, позиционное, счет с нуля.


sniknik   (2006-03-17 18:19:00) [2]

не, не посоветую...
запросы для access (jet) состоят только из одной команды, т.е. никаких переменных в пакете и вообще пакета не получится. а оптимизировать запрос которого в глаза не видел и при полном незнании его смысла/задачи... не такой безнадежный оптимист.


De   (2006-03-17 18:03:00) [3]


> sniknik ©   (17.03.06 17:50) [10]
> и сервер sql конечно никаких возможностей не предоставляет?
> и "охрененый UNION" "верю" совсем не оптимизируем...

в Access'е не силен (выбрал изза распространенности), может Вы что посоветуете


sniknik   (2006-03-17 17:50:00) [4]

и сервер sql конечно никаких возможностей не предоставляет?

и "охрененый UNION" "верю" совсем не оптимизируем...


De   (2006-03-17 17:46:00) [5]


> sniknik ©   (17.03.06 17:41) [8]
> > в запросе > 20 параметров с одинаковым именем, обломно
> изза халтуры некоторых писать огромные партянки пустого
> кода :(
> а вот это уже халтура (имхо) - 20 параметров... это что
> же за запросы и на каком сервере? нормально написать нельзя?
>

нельзя, там охрененый UNION идет


sniknik   (2006-03-17 17:41:00) [6]

> он, зараза, первый попавшийся ищет и отваливается, блин халявщики
попробуй сам всем присвой, все одно будет без толку, так ADO устроен. смысла нет все одноименные искать.

> в запросе > 20 параметров с одинаковым именем, обломно изза халтуры некоторых писать огромные партянки пустого кода :(
а вот это уже халтура (имхо) - 20 параметров... это что же за запросы и на каком сервере? нормально написать нельзя?


De   (2006-03-17 17:29:00) [7]

помоему так будет оптимальней:
   
for i := 0 to q.Parameters.Count - 1 do begin
 if q.Parameters[i].Name = 'iParam' then q.Parameters[i].Value := 1;
 if q.Parameters[i].Name = 'iNewParam' then q.Parameters[i].Value := 2;
end;
q.Open;


Reindeer Moss Eater   (2006-03-17 17:28:00) [8]

Ужас какой.
use BDE instead.


De   (2006-03-17 17:20:00) [9]

точно см.:
function TParameters.ParamByName(const Value: WideString): TParameter;
function TParameters.FindParam(const Value: WideString): TParameter;

он, зараза, первый попавшийся ищет и отваливается, блин халявщики


> Desdechado ©   (17.03.06 17:14) [4]
> поэтому зарекся использовать одинаковые имена, использую
> всегда разные

в запросе > 20 параметров с одинаковым именем, обломно изза халтуры некоторых писать огромные партянки пустого кода :(


Desdechado   (2006-03-17 17:14:00) [10]

я давно заметил, что в разных Query (TQuery, TADOQuery, TSQLQuery и т.п.) обработка одноименных параметров происходит по-разному
поэтому зарекся использовать одинаковые имена, использую всегда разные


Плохиш   (2006-03-17 17:12:00) [11]


> Reindeer Moss Eater ©   (17.03.06 16:55) [1]
> всем

Врёшь

> если второй вариант то как грамотно присвоить значения всем
> параметрам?

q.Parameters[0].Value = 1
q.Parameters[1].Value = 1


De   (2006-03-17 17:03:00) [12]

да вроде не всем, проверьте на практике
q.sql.text := 'select * from table1 where _f1=:iParam and _f2=:iParam';
q.Parameters.ParamByName('iParam').Value := 1;


смотрю:
q.Parameters[0].Value = 1
q.Parameters[1].Value = Null

P.S.
квери пустой приходи, хотя если на СУБД(Access) его с этими же параметрами запускать выборка приходит


Reindeer Moss Eater   (2006-03-17 16:55:00) [13]

всем


Наверх

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