Текущий архив: 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.47 MB
Время: 0.041 c