Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вывести все значения, в не зависимости от значения Parameters 
V
    Опции темы
Cashey
Дата 8.6.2009, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



загаловок не совсем корректный. не знаю как лучше назвать.

в общем смысл такой. есть запрос **** WHERE t.field1 = :P1 AND t.field2 = :P2 AND t.field3 = :P3, где Px это параметры ADOQuery1. Все нормально если нужно вывести отбор по всем этим значениям. Но что делать если надо вывести все значения в не зависимости от  параметра PЗ? Переписвть SQL не получается. так как в этом случае начинает ругатся на изменение в полях. Используются Lookup поля.
Надеюсь понятно описал smile



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Romikgy
Дата 8.6.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Цитата(Cashey @  8.6.2009,  14:52 Найти цитируемый пост)
Но что делать если надо вывести все значения в не зависимости от  параметра PЗ? 

т.е. р3 не учитывать?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Keeper89
Дата 8.6.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 1
Всего: 58



А почему не формировать запрос в зависимости от того нужен ли последний параметр?


--------------------
PM MAIL WWW   Вверх
Deniz
Дата 9.6.2009, 05:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Если я правильно понял, то:
Код
select ... from ... 
where (t.field1 = :P1 or :P1 is null)
  AND (t.field2 = :P2 or :P2 is null)
  AND (t.field3 = :P3 or :P3 is null)



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Cashey
Дата 10.6.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Deniz @  9.6.2009,  06:11 Найти цитируемый пост)
Если я правильно понял, то:КодincludeSyntax('sql');select ... from ... where (t.field1 = :P1 or :P1 is null)  AND (t.field2 = :P2 or :P2 is null)  AND (t.field3 = :P3 or :P3 is null)

идея интересная, но не работает.


Цитата(Keeper89 @  8.6.2009,  20:25 Найти цитируемый пост)
А почему не формировать запрос в зависимости от того нужен ли последний параметр?

когда происходит замена SQL текста обнуляется список TFields, а к полям идет привязка как элементов формы так и lookup полей 


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Frees
Дата 10.6.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Cashey @  10.6.2009,  12:20 Найти цитируемый пост)
идея интересная, но не работает.


должна работать если правельно пользовать такой запос

если P3 например не нужно то ты должен этому параметру присвоить NULL

Код

ADOQuery1.ParamByName('P3').Value := NULL;


Это сообщение отредактировал(а) Frees - 10.6.2009, 10:38


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Deniz
Дата 10.6.2009, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Цитата(Cashey @  10.6.2009,  13:20 Найти цитируемый пост)
идея интересная, но не работает.
А что не работает?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Cashey
Дата 10.6.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Frees @  10.6.2009,  11:37 Найти цитируемый пост)
должна работать если правельно пользовать такой запос

в этом случае при присваении значению P3 отбор происходит по всем записям, т.е. он игнорируется

В параметрах ADOQuery1 автоматически появляются 2 параметра с одним именем. у одного тип Integer, у второго оставяю NULL. возможно какая то ошибка в этом

Добавлено через 9 минут и 19 секунд
спасибо за идею. разобрался. надо так делать:
Код
AND (t.field3 = :P3 or :P4 is null)

и 
Код
ADOQuery1.ParamByName('P4').Value := NULL;



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Deniz
Дата 10.6.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 8
Всего: 44



Цитата(Cashey @  10.6.2009,  14:27 Найти цитируемый пост)
надо так делать:
нет, просто поменяй текст запроса, это, вероятно, глюки ADO в Delphi.
Код
declare @Param1 int
set @Param1 = :p1
select top 10 * from myTable t
where (t.MyField = @Param1 or @Param1 is null)
вот так точно работает, сам проверял.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.