Главная страница
    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.47 MB
Время: 0.039 c
2-1142936552
tytus
2006-03-21 13:22
2006.04.02
Помогите с созданием компонента


15-1142229826
Некто
2006-03-13 09:03
2006.04.02
Полезные физические упражнения


15-1141838657
Loginov Dmitry
2006-03-08 20:24
2006.04.02
Заморочка при разработке компонента


2-1142945320
Евстегней
2006-03-21 15:48
2006.04.02
Бинарный код


1-1141025682
Diezel
2006-02-27 10:34
2006.04.02
Грабер формы memo





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский