Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Траблы со Switch`em / 13 сообщений из 13, страница 1 из 1
25.07.2004, 03:01:03
    #32620188
Access_Abuser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Поддерживает ли Свитч 28 вариантов ?
...
Рейтинг: 0 / 0
25.07.2004, 03:04:20
    #32620189
Access_Abuser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Вернее даже что делать когда он этого не поддерживает.
...
Рейтинг: 0 / 0
25.07.2004, 07:55:55
    #32620204
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
функцию свою писать - даже если поддерживает ,столь громоздким выражением нереально пользоваться в запросах
...
Рейтинг: 0 / 0
25.07.2004, 17:35:33
    #32620333
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Как минимум 50 вариантов он поддерживает. И мне кажется, что ограничения нет.

Код: plaintext
1.
2.
3.
4.
5.
?switch(false, 1 ,false, 2 ,false, 3 ,false, 4 ,false, 5 ,false, 6 ,false, 7 ,false, 8 ,false, 9 ,false, 10 ,
false, 11 ,false, 12 ,false, 13 ,false, 14 ,false, 15 ,false, 16 ,false, 17 ,false, 18 ,false, 19 ,false, 20 ,
false, 21 ,false, 22 ,false, 23 ,false, 24 ,false, 25 ,false, 26 ,false, 27 ,false, 28 ,false, 29 ,false, 30 ,
false, 31 ,false, 32 ,false, 33 ,false, 34 ,false, 35 ,false, 36 ,false, 37 ,false, 38 ,false, 39 ,false, 40 ,
false, 41 ,false, 42 ,false, 43 ,false, 44 ,false, 45 ,false, 46 ,false, 47 ,false, 48 ,true, 49 ,false, 50 )
  49 

(На строки я поделил для удобочитаемости.)
...
Рейтинг: 0 / 0
26.07.2004, 10:10:12
    #32620652
Access_Abuser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Я пишу на 28 позиций и получаю в ответете что-то вроде "слишко громоздкое выражение" , the query is to complicated. Такие вот пироги.
Владимир Саныч подскажи плиз еще вот что.
Какой синтаксис будет если в аргумент функиии мне нужно поставить сложное выражение.
Скажем :
SELECT cur_data.F0103 AS [Код группы],
Right$("0000000" & cur_data.F0105, 7) AS [код],
Switch(
cur_data!F0103=04,'Бритвы и Эпиляторы',
cur_data!F0103=07,'Машинки для стрижки',
cur_data!F0103=08,'Фены',
cur_data!F0103=09,'Вытяжки',
cur_data!F0103=10,'Кондиционеры',
cur_data!F0103=12,'Посудомоечные машины',
cur_data!F0103=14,'Поверхности',
cur_data!F0103=16,'Стиральные машины',
cur_data!F0103=17,'Холодильники',
cur_data!F0103=18,'Морозильные камеры',
cur_data!F0103=19, (Выражение),
)
AS Comment,
cur_data.F0202
FROM cur_data
WHERE (((cur_data.F0101)=x))

Где выражение это еще одна функция "SWITCH"

Да вот еще что у меня Аксес 2003 есть 2002.
И если верхний кусок расширить до 28 позиций то работать не будет, можешь попробовать.


Shuhard писать свою функцию... эээ... Бивас слыш чувак, а что такое своя функция... ЭЭЭ... Я пока чайник даже представления не имею как писать что-то свое на ВБА. Буду признателен за совет с чего начать.
...
Рейтинг: 0 / 0
26.07.2004, 10:45:51
    #32620743
ищ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
особенность switch: проверяет все условия, даже если то, которое нужно находится первым в списке.
...
Рейтинг: 0 / 0
26.07.2004, 10:59:29
    #32620783
Access_Abuser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
ищ
Сенкс ... Буду знать что к памяти Свитч относится прожорливо.
Плиз объясни что делать то нужно ?
Потому что я в отчетах утону такими темпами.
...
Рейтинг: 0 / 0
26.07.2004, 11:01:01
    #32620787
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Обычно никто не пытается делать такие свитчи. В данном случае, наверное, нужно просто создать справочную таблицу и сделать подстановку в cur_data.
...
Рейтинг: 0 / 0
26.07.2004, 11:21:18
    #32620825
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Access_Abuser"слишко громоздкое выражение" , the query is to complicated.
Query is too compex. Это значит, что запрос слишком сложный. Свитч не виноват, он просто стал последней каплей. Упрощать можно за счет чего угодно.

Access_AbuserSELECT cur_data.F0103 AS [Код группы],
Right$("0000000" & cur_data.F0105, 7) AS [код],
Switch(
cur_data!F0103=04,'Бритвы и Эпиляторы',
cur_data!F0103=07,'Машинки для стрижки',
cur_data!F0103=08,'Фены',
cur_data!F0103=09,'Вытяжки',
cur_data!F0103=10,'Кондиционеры',
cur_data!F0103=12,'Посудомоечные машины',
cur_data!F0103=14,'Поверхности',
cur_data!F0103=16,'Стиральные машины',
cur_data!F0103=17,'Холодильники',
cur_data!F0103=18,'Морозильные камеры',
cur_data!F0103=19, (Выражение),
)
Во-первых, тут лишняя запятая в конце.
Во-вторых, я не понял, в чем вопрос. :^)
В-третьих, я бы завел таблицу с этими данными, включил бы ее в запрос и выводил бы поле из нее, а не свитч. Задно будет легче вносить изменения, если содержимое этого списка изменится.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 04  Бритвы и Эпиляторы
 07  Машинки для стрижки
 08  Фены
 09  Вытяжки
 10  Кондиционеры
 12  Посудомоечные машины
 14  Поверхности
 16  Стиральные машины
 17  Холодильники
 18  Морозильные камеры
 19  (Выражение)
...
Рейтинг: 0 / 0
26.07.2004, 11:36:56
    #32620858
Access_Abuser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Alexander G Сенск...
А теперь тупой вопрос.
А через какую функцию делать подстановку...
Что-то я не врубаюсь.
Единственная мысль сделать таблицу с этими данными.
Сделать связь по группе.
Так что ли ?
Если есть альтернатива готов послушать.
Хотя резоннее всего будет действительно свящанная таблица.
И как я раньше не додумался...
ТТ.
...
Рейтинг: 0 / 0
26.07.2004, 12:00:32
    #32620903
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Access_AbuserБуду знать что к памяти Свитч относится прожорливо.
Не столько к памяти, сколько к времени исполнения.

А Alexander G про справочник действительно сказал раньше меня, прошу прощения.
...
Рейтинг: 0 / 0
26.07.2004, 12:35:39
    #32620975
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
можно тело запроса формировать динамически
если уж так хочешь Свитч использовать, тем более что их 2
...
Рейтинг: 0 / 0
26.07.2004, 22:40:15
    #32622090
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Траблы со Switch`em
Access_Abuser Alexander G Сенск...
А теперь тупой вопрос.
А через какую функцию делать подстановку...
Что-то я не врубаюсь.
Единственная мысль сделать таблицу с этими данными.
Сделать связь по группе.
Так что ли ?
Если есть альтернатива готов послушать.
Хотя резоннее всего будет действительно свящанная таблица.
И как я раньше не додумался...
ТТ.
Прошу извинить, я сейчас в отпуске, заглянул на минуту, и ответить смог не сразу. Все мысли верные - для cur_data.F0103 в конструкторе делаем подстановку из справочной таблицы.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Траблы со Switch`em / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]