Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Одноименные параметры в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.05 c
15-1142109314
ZeFiR
2006-03-11 23:35
2006.04.02
Происхождение вашего ника


15-1141884390
Ega23
2006-03-09 09:06
2006.04.02
С Днём рождения! 9 марта


2-1142430492
Id
2006-03-15 16:48
2006.04.02
Ошибка при просмотре прав для таблицы


2-1142416756
VitV
2006-03-15 12:59
2006.04.02
DBLookupComboBox-заполнение.


1-1140940887
Paha
2006-02-26 11:01
2006.04.02
TICQClient и сообщения с мобильника





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