Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 18:52   #1
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
Счастье Запрос с изменяющимися параметрами

Например есть запрос
Код:
select * from TableName where     a = :Name 
                                       and   b = :Files
                                       and   c = :Group
С помощью Query забиваю запрос и соответственно присваиваю через ParamByName('') значения.

Загвоздка в том, что количество наполненых параметров может меняться. Т.е. могут быть все значения параметров, а может быть дано только Name и два других пусты. Соответственно ответ будет пустая строка.

Я конечно могу программно проверять на наличие значений параметров и соответственно динамически через Query.SQL.Add изменять строку запроса, НО может быть есть другой вариант, чтобы построить ОДИН правильный запрос.

Спасибо.
Получил помощь — отблагодарил.

Последний раз редактировалось Stilet; 18.03.2010 в 10:55.
GenniY вне форума Ответить с цитированием
Старый 18.03.2010, 00:03   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Я конечно могу программно проверять на наличие значений параметров и соответственно динамически через Query.SQL.Add изменять строку запроса, НО может быть есть другой вариант, чтобы построить ОДИН правильный запрос.
в нормальных компонентах это называется макросами
а так да - можно и руками пересобрать
soleil@mmc вне форума Ответить с цитированием
Старый 18.03.2010, 10:19   #3
GenniY
Форумчанин
 
Регистрация: 09.09.2009
Сообщений: 181
По умолчанию

А вот интересно, Может как-то можно построить запрос, чтобы если какой-то параметр пуст, то его пропускают. Это походу вопрос на тему SQL-запросов.
Получил помощь — отблагодарил.
GenniY вне форума Ответить с цитированием
Старый 18.03.2010, 10:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
soleil@mmc
Извиняюсь что в чужую тему, но стандартный Query такие "макросы" поддерживает? Просто я в OCI для Оракла свойство Macro видел, а в стандартном вроде нет

P.S. Меня тоже интересует эта тема.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.03.2010, 11:44   #5
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Stilet, у стандартного Query таких приблуд нет, знаю точно они есть у RxQuery
GenniY, составляй запрос динамически, проблем будет меньше
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 18.03.2010, 12:01   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

RxQuery, ODAC точно поддерживают
при желании можно самому прикрутить обертку к обычным компонентам
soleil@mmc вне форума Ответить с цитированием
Старый 18.03.2010, 12:05   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Если мои коллеги и GenniY будут не против, я спрошу в этой теме.
У меня подобная проблема - я хочу упрятать огромный запрос на сервер Оракла (например во вьюшку), а из своей программы передавать этой вьюшке параметры, почти как у автора. При этом кол-во параметров не меняется.
Вопрос: можно ли это сделать стандартными ADO компонентами. Уж очень не хочется ставить OCI.
Но в OCI компонентах есть отдельное свойство для макроса, а можно ли как-то этот макрос ну что-ли обойти, прописав в SQL.Text стандартного компонента ADO команду типа представленной в первом посте так чтоб вьюшка приняла параметры и работала с ними?
Цитата:
при желании можно самому прикрутить обертку к обычным компонентам
Вот поподробнее пожалуйста
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.03.2010, 12:35   #8
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Stilet, ты можешь так же сделать этот макрос черех SQL.Text... в RxQuery, просто тупой разбор всего текста с подстановкой или без подстановки строчки(макроса) в текст основного запроса
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 18.03.2010, 12:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Так ок.
Допустим у меня вьюшка
Код:
select name,kod from table where (Вот тут параметр=kod)
Эта вьюшка допустим называется GetNames, и ессно расположена на Сервере.
Как мне в программе написать так чтоб параметр был ораклом коректно подставлен?
типа
Код:
Sql.Text:='Select * from GetNames...мой параметр
и как указать параметры чтоб оракл подставил их во вьюшку и выполнил.
т.е. мне нужна нестатическая вьюшка. Насколько мне извесно во вьюшки нельзя вот так параметры кидать - это правда?
Для аналогии в MS SQL 2008 и Оракле11 есть функции возвращающие таблицу. Но у меня Оракл 8 вращается, там таких возможностей нет.

вообще об этом статьи есть? Чтоб именно пошагам расписывался алгоритм такой работы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.03.2010, 14:04   #10
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Вьюшка поэтому и вьюшка, что туда параметры в принципе не передать, параметры можно передать в процедуру которая вызовет вьюху и добавит условие where

Edit
ИМХО, так как я с ораклом не работал и о тонкостях СУБД представления не имею
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 18.03.2010 в 15:16. Причина: thx soleil@mmc
quit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с параметрами dron4ikkkk JavaScript, Ajax 0 10.11.2009 22:11
Проблема с параметрами Pti44ka Общие вопросы по Java, Java SE, Kotlin 4 03.10.2009 20:51
программа с параметрами furstenberg Общие вопросы Delphi 2 07.06.2009 15:18
UPDATE с параметрами QQmb SQL, базы данных 11 06.05.2009 15:20
ActiveX с параметрами Chainic Общие вопросы Delphi 2 28.05.2008 16:25