Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поисковик, как правильно написать запрос 
V
    Опции темы
lynx13
Дата 21.7.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

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



У меня 12 параметров поиска... Понятно, что выбор каждого из них нужен по необходимости (т.е какие-то будут учитываться, а какие-то останутся пустыми)...как мне сделать запрос так, чтобы не перебирать все возможные варианты???
(т.е.  if (dblookupComboBox2.Text='') and (dblookupComboBox2.Text='') and ...and not(edit1.text='') then запрос1 
 if not(dblookupComboBox2.Text='') and (dblookupComboBox2.Text='') and ...and not(edit1.text='') then запрос2
и т.д. 12! разных условий)
PM MAIL   Вверх
aleksh
Дата 21.7.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 2
Всего: 13



а можно конкретизировать?
возникала подобная задача, правда не с БД. решил просто: значения всех компонентов циклом объединял в одну строку-запрос, если значение не было указано -- в строке отсутствовало -- в запросе не участвовало, разве что иногда была проверка: если поле пустое -- подставлять *
PM MAIL   Вверх
lynx13
Дата 21.7.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

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



Так вот просто в моем случае нужно дофига проверок...а столько вручную не напишешь...
PM MAIL   Вверх
aleksh
Дата 21.7.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 2
Всего: 13



то, что много, это было сразу понятно; но, к сожалению, это, собственно, практически единственное из понятного
среди чего, хоть, искать?
PM MAIL   Вверх
lynx13
Дата 21.7.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

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



Не может есть какой-нить другой способ чтобы эти запросы написать...

Я например так пишу:

 
Код

 if not(dblookupComboBox2.Text='')and  not(dblookupComboBox1.Text='') and not(edit1.Text='') and not(edit5.Text='')  then
oraQuery1.SQL.Strings[50]:=format('and blocks.BLOCKDESCR = ''%s''and streetname.name=''%s''and address.buildnum =%s and buildings.invnumber=''%s''',[dblookupComboBox2.Text,dblookupComboBox1.Text,edit1.Text,edit5.Text]);


if not(dblookupComboBox2.Text='')and (dblookupComboBox1.Text='') and not(edit1.Text='')and not(edit5.Text='') then
oraQuery1.SQL.Strings[50]:=format('and blocks.BLOCKDESCR = ''%s'' and address.buildnum =%s and buildings.invnumber=''%s''',[dblookupComboBox2.Text,edit1.Text,edit5.Text]);



и так далее пока не переберу все варианты
PM MAIL   Вверх
aleksh
Дата 21.7.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 2
Всего: 13



с ораклом не знаком, поэтому понял приблизительно, но есть такой вариант:
объявляется две строки (условно - стр1 и стр2), задается поиск компонентов по форме (они же на одной форме?), дальше ветление: если компонента (dblookupComboBox) и не пустая -- то читается название и согласно ему дополняется стр1 (например: если нашил не пустую dblookupComboBox2 то стр1:=стр1+'and blocks.BLOCKDESCR = ''%s''), по тому же принципу и с эдитами и второй строкой (например: если нашил не пустую edit1.Text='', то стр2:=стр2+edit1.Text,), когда все пройдено -- формируем итоговую строку:
Код

oraQuery1.SQL.Strings[50]:=format('+стр1+'['+стр2+']'); //не забыв в стр2 удалить последний символ

вот если бы эти комбобоксы да эдиты можно было бы забить в массив...
понимаю, "закрученно", пожалуй можно проще, это первое что пришло в голову...
PM MAIL   Вверх
Akella
Дата 21.7.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



12 это дофига???????? smile  дааа, разленилась молодёжь.
PM MAIL   Вверх
offline
Дата 21.7.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

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



Создай запрос с параметрами и все, а потом присваивай эти параметры в зависимости от значения данных.
PM MAIL   Вверх
lynx13
Дата 22.7.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 15.2.2008

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



aleksh 
Спасибо!!! Я б не додумалась наверное smile 
PM MAIL   Вверх
uranpro
Дата 22.7.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 571
Регистрация: 7.5.2008
Где: Moscow city

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



offline, согласен!

и условия через <or>

Код

(field1=:par1) or (field2=:par2) or ...

parambyname('par1').value:=...



--------------------
I want a perfect soul
PM MAIL 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.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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