|
Нестандартный синтаксис оператора "ВЫБОР" | ☑ | ||
---|---|---|---|---|
0
Vovan_Magadan
23.05.13
✎
04:59
|
Привет.
Я тут случайно наткнулся на одну статью, на вашем любимом инфустарге http://infostart.ru/public/67585/ Суть её в том, автор рассказывает как сократить код, вместо: Выбрать Справочник.Номенклатура.Наименование, Выбор Когда Справочник.Номенклатура.Этогруппа = Истина Тогда «Это Группа» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 1000 Тогда «1000 -» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 100 Тогда «100 – 1000» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 10 Тогда «10 – 100» Когда Справочник.Номенклатура.ЗакупочнаяЦена > 0 Тогда «0 – 10» Иначе «Не Задана» Конец Цена Писать: Запрос = Новый Запрос(" |ВЫБРАТЬ | ВЫБОР &Перем | КОГДА 1 | ТОГДА "Раз" | КОГДА 2 | ТОГДА "Два" | КОГДА 3 | ТОГДА "Три" | ИНАЧЕ "Много" | КОНЕЦ КАК РезультатВыбора"); Запрос.УстановитьПараметр("Перем",2); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Сообщить(Выборка.РезультатВыбора); Да действительно аналог касе, которого не хватало многим. НО меня удивило одно, у него запросах абсолютно разные сравнения, в первом он сравнивает как "> 1000", во втором " = 1". я там не зараген, т.к. не люблю их сайт. Вот и вопрос, как написать данный метод на сравнения большего и меньшего? | ВЫБОР Справочник.Номенклатура.ЗакупочнаяЦена | КОГДА 1 // тут норм | ТОГДА "Раз" | КОГДА 2 // тут норм | ТОГДА "Два" | КОГДА > 3 // тут ошибка | ТОГДА "Три" | ИНАЧЕ "Много" |
|||
1
mistеr
23.05.13
✎
05:18
|
Откуда ноги растут: http://msdn.microsoft.com/en-US/library/ms181765(v=SQL.90).aspx
Simple CASE expression: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE expression: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Еще вопросы остались? |
|||
2
Balabass
23.05.13
✎
05:30
|
Еду в Магадан (с)
|
|||
3
Vovan_Magadan
23.05.13
✎
05:59
|
(1) да, как это вообще отвечает на мой вопрос? Смысл выкладывать в тему тоже самое что в (0) тока по русски?
|
|||
4
Михаил 1С
23.05.13
✎
06:03
|
Спасибо, Вован, за просвещение и Ликвидацию Безграмотности. Я вот и не знал, что в запросах можно делать такое условие (case) - с множеством выборов. Приятно, что есть такое.
... Если найдешь еще с >, то совсем хорошо будет! |
|||
5
kosts
23.05.13
✎
06:03
|
(0) Лично натыкался, когда такой синтаксис коряво работал. По этому так не делаю.
|
|||
6
mistеr
23.05.13
✎
06:10
|
(3) Ответ на вопрос процитированном в синтаксисе выражения. Подробные разъяснения - по ссылке, я наивно рассчитывал, что по ним иногда ходят.
Могу кратко перевести на русский: "никак". |
|||
7
mistеr
23.05.13
✎
06:11
|
(6) в <-> процитированном
|
|||
8
mistеr
23.05.13
✎
06:11
|
(5) Не зря, видимо, его в документации не описали.
|
|||
9
Рэйв
23.05.13
✎
06:20
|
ленивый пишет код дважды.
Лучше нормально написать. |
|||
10
1Сергей
23.05.13
✎
06:37
|
В MS SQL такая конструкция всегда работала
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |