Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.02.2008, 19:57
Unocide Unocide вне форума
Прохожий
 
Регистрация: 23.11.2005
Сообщения: 16
Репутация: 10
По умолчанию Параметры TADOQuery

Существует такой запрос:
Код:
select PName, Cname, citX,citY from cities left join players on players.PID=cities.PID
where (citX-:citX)*(citX-:citX)+(citY-:citY)*(citY-:citY) = (SELECT min((citX-:citX)*(citX-:citX)+(citY-:citY)*(citY-:citY)) from cities where PID<>:PID)
По сути в нем используются три параметра citX, citY, PID. Но почему-то дельфи создает 9 параметров. Т.е. при каждом написании :Param Дельфи не смотря на то что такой параметр уже есть создает новый. Сие по-моему не оч корректно, но эт на совести разработчиков дельфей, мне же надобно как нить выбрацца из ситуацЫи. Что можно сделать чтоб в массиве Parameters создавалось только три параметра? И обращаться (изменять) приходилось только по одному разу?
Ответить с цитированием
  #2  
Старый 25.02.2008, 22:39
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
Радость

Цитата:
Сообщение от Unocide
Существует такой запрос:
Код:
select PName, Cname, citX,citY from cities left join players on players.PID=cities.PID
where (citX-:citX)*(citX-:citX)+(citY-:citY)*(citY-:citY) = (SELECT min((citX-:citX)*(citX-:citX)+(citY-:citY)*(citY-:citY)) from cities where PID<>:PID)
По сути в нем используются три параметра citX, citY, PID. Но почему-то дельфи создает 9 параметров. Т.е. при каждом написании :Param Дельфи не смотря на то что такой параметр уже есть создает новый. Сие по-моему не оч корректно, но эт на совести разработчиков дельфей, мне же надобно как нить выбрацца из ситуацЫи. Что можно сделать чтоб в массиве Parameters создавалось только три параметра? И обращаться (изменять) приходилось только по одному разу?

Ты делай ParamByName и будут заменены все параметры!
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #3  
Старый 26.02.2008, 13:41
Unocide Unocide вне форума
Прохожий
 
Регистрация: 23.11.2005
Сообщения: 16
Репутация: 10
Вопрос

Не согласен, в случае ParamByName как и в случае ParamValues значение присваивается первому параметру с таким именем. Проверял поиндексно.
Пока присваиваю значения по индексам принимая параметры за отдельные, вроде работает. Как только проставляю значения по именам запрос результатов не выдает.
В принципе на данном этапе программирования мне это не очень мешает (правд нарушает эстетический вид кода), но в будущем мне интересно как из подобных ситуаций выбираться (вдруг в запросе параметр будет повторяться не 8 а 80 раз, маловероятно но всеж)
Ответить с цитированием
  #4  
Старый 26.02.2008, 19:21
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
Радость

Цитата:
Сообщение от Unocide
Не согласен, в случае ParamByName как и в случае ParamValues значение присваивается первому параметру с таким именем. Проверял поиндексно.
Пока присваиваю значения по индексам принимая параметры за отдельные, вроде работает. Как только проставляю значения по именам запрос результатов не выдает.
В принципе на данном этапе программирования мне это не очень мешает (правд нарушает эстетический вид кода), но в будущем мне интересно как из подобных ситуаций выбираться (вдруг в запросе параметр будет повторяться не 8 а 80 раз, маловероятно но всеж)

Ну тогда вместо параметров:

Код:
 
const
 CONST_SQL_SELECT = 'SELECT * FROM cars c LEFT JOIN cars_types ct ON ct.id = c.cartype WHERE c.style = %style% or ct.style = %style%';
begin
 ..
 setSelect.SQL.Text := CONST_SQL_SELECT;
 setSelect.SQL.Text := AnsiReplaceStr(setSelect.SQL.Text, '%style%', 1);
 setSelect.Open();
 ..
end;

- ok
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #5  
Старый 28.02.2008, 18:19
Unocide Unocide вне форума
Прохожий
 
Регистрация: 23.11.2005
Сообщения: 16
Репутация: 10
По умолчанию

хмм красиво)))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter