Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

Одноименные параметры в Query   Найти похожие ветки 

 
De   (2006-03-17 16:55) [0]

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


 
Reindeer Moss Eater ©   (2006-03-17 16:55) [1]

всем


 
De   (2006-03-17 17:03) [2]

да вроде не всем, проверьте на практике
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) его с этими же параметрами запускать выборка приходит


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


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

Врёшь

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

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


 
Desdechado ©   (2006-03-17 17:14) [4]

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


 
De   (2006-03-17 17:20) [5]

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

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


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

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


 
Reindeer Moss Eater ©   (2006-03-17 17:28) [6]

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


 
De   (2006-03-17 17:29) [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;


 
sniknik ©   (2006-03-17 17:41) [8]

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

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


 
De   (2006-03-17 17:46) [9]


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

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


 
sniknik ©   (2006-03-17 17:50) [10]

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

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


 
De   (2006-03-17 18:03) [11]


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

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


 
sniknik ©   (2006-03-17 18:19) [12]

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


 
Anatoly Podgoretsky ©   (2006-03-17 21:28) [13]

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



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

Текущий архив: 2006.04.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
4-1137144109
Andrey C
2006-01-13 12:21
2006.04.02
Програмный клик мышки


15-1142019988
ArtemESC
2006-03-10 22:46
2006.04.02
Программа для запоминания анг. слов..


2-1142493856
serg111111
2006-03-16 10:24
2006.04.02
Помогите с сервисом


2-1142777987
Der Nechk@ssoff
2006-03-19 17:19
2006.04.02
Открытие файла в MediaPlayer


15-1141561451
Piter
2006-03-05 15:24
2006.04.02
Почему в APE выкладывают сразу альбомами?