|
Как в запросе обработать условие наличия/отсутствия параметров? | ☑ | ||
---|---|---|---|---|
0
elian_hunter
28.07.13
✎
14:47
|
Общая ситуация такая: по коду программы в запрос может быть передан параметр, а может быть и не передан. В результате, в запросе либо надо поставить условие с этим параметром, либо не надо. Например, если дата была передана, то запрос следует выполнить по виртуальной таблице с параметром даты, а если дата не была передана, то без параметра. Каким образом это лучше сделать? Есть ли в языке запросов что-либо похожее на стандартную функцию ЗначениеЗаполнено()? Или как-то еще?
|
|||
1
Пеппи
28.07.13
✎
14:48
|
в какой среде будет исполняться запрос? :)
|
|||
2
Капитан О
28.07.13
✎
14:56
|
фигурные скобки есть. а ещё можно всегда передавать параметр. а ещё можно использовать &ЗначениеЗаполнено
|
|||
3
elian_hunter
28.07.13
✎
15:00
|
да в любой среде! как в запросе проверить - был ли передан в него параметр или не был в общем случае?
|
|||
4
Капитан О
28.07.13
✎
15:04
|
(3) поискать в параметрах как проверить
|
|||
5
Капитан О
28.07.13
✎
15:06
|
ещё можно посравнивать с чем-нибудь уже внутри запроса, но это не общий случай
|
|||
6
МихаилМ
28.07.13
✎
15:07
|
это дурной тон работы с субд тк чаще всего невозможно построить план запроса под условия с параметрами и без.
как следствие построенный запроса план не сохраняется в кэше запросов. лучше сгенерируйте разные тексты запросов под разные случаи. |
|||
7
HEKPOH
28.07.13
✎
15:07
|
Параметр в запрос передает код, написанный программистом.
Я всегда делаю так: проверяю, заполнено ли значение, которое устанавливает пользователь. в зависимости от этого меняется текст запроса с помощью СтрЗаменить и условие на передачу параметра |
|||
8
elian_hunter
28.07.13
✎
15:08
|
(6) понятно. спасибо.
|
|||
9
mikecool
28.07.13
✎
15:25
|
&Параметр = Значение(ПустаяСсылкаЗаданногоТипа) Или Поле = &Параметр
|
|||
10
Капитан О
28.07.13
✎
15:27
|
(9) пустая ссылка для составного поля какая?
|
|||
11
zahar140382
28.07.13
✎
15:35
|
в отборе:
Выбор &Параметр = неопределено тогда Истина иначе Дата = &Параметр конец |
|||
12
elian_hunter
28.07.13
✎
15:36
|
Пофантазировать с пустыми ссылками и тому подобное я и сам сообразить могу. Просто подумалось, что есть уже продуманные универсальные способы.
|
|||
13
zahar140382
28.07.13
✎
15:41
|
ВЫБРАТЬ
ЗаказПокупателя.Номер, ЗаказПокупателя.Дата, ЗаказПокупателя.ФамилияКЛ КАК Фамилия, ЗаказПокупателя.ИмяКЛ КАК Имя, ЗаказПокупателя.ОтчествоКЛ КАК Отчество, ЗаказПокупателя.ТелефонКЛ КАК Телефон, ЗаказПокупателя.СостояниеЗаказа КАК СостояниеЗаказа, ЗаказПокупателя.Ссылка КАК ЗаказПокупателя, ЗаказПокупателя.ПричинаИзмененияСостояния КАК СостояниеДетальное ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ВЫБОР КОГДА &НомерЗаказа <> НЕОПРЕДЕЛЕНО ТОГДА ЗаказПокупателя.Номер ПОДОБНО "%" + &НомерЗаказа + "%" ИНАЧЕ ИСТИНА КОНЕЦ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |