powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / РасширенныйCase...
6 сообщений из 6, страница 1 из 1
РасширенныйCase...
    #32212447
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник вопрос. Можно ли найти замену такой ситуации: есть несколько вложенных If 'ов, причем каждый проверяет значения нескольких полей. Что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
if (field1.Value= 1 )and(field2.Value= 0 )and(field3.Value= 0 ) then
.............................
else
  if (field1.Value= 1 )and(field2.Value= 1 )and(field3.Value= 0 ) then
  .............................
  else
    if (field1.Value= 1 )and(field2.Value= 0 )and(field3.Value= 1 ) then
    .............................
    .............................
    .............................
    else
    .............................
    end if
  end if
end if  

С помощью Case можно было бы это реализовать в таком виде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select Case (field1.Value,field2.Value,field3.Value)
case  1 , 0 , 0  
...........................
case  1 , 1 , 0  
...........................
case  1 , 0 , 1 
...........................
End Select

А возможно ли?
...
Рейтинг: 0 / 0
РасширенныйCase...
    #32212469
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select Case (format(field1.Value, "000 ") & format(field2.Value, "000 ") & format(field3.Value, "000 "))
case  "001000000 "
...........................
case  "001001000 "
...........................
case  "001000001 "
...........................
End Select
...
Рейтинг: 0 / 0
РасширенныйCase...
    #32212479
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч:
Красивое решение! Но...
А если нужно проверять не числовые значения, а, к примеру,
(IsNull(Dmax(бла-бла-бла1))=True) and (IsNull(Dmax(бла-бла-бла2)=False) and (IsNull(Dmax(бла-бла-бла3)=False)?
Как в этом случае быть? Неужто придется выстраивать огромную иерархию ифов?
...
Рейтинг: 0 / 0
РасширенныйCase...
    #32212493
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если значения логические (типа IsNull и т.п.), то их можно преобразовать к нулям и единицам, сцепить в одну строчку и по ее значениям кейситься.

Function BooToMoo(b As Boolean) As String
BooToMoo = IIf(b, "1", "0")
End Function

Select Case BooToMoo(IsNull(f)) & BooToMoo(g=5)
Case "11"
Case "00"
...
Рейтинг: 0 / 0
РасширенныйCase...
    #32212501
G&P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, спасибо за мыслЮ...
...
Рейтинг: 0 / 0
РасширенныйCase...
    #32212628
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
саныч и мне понравилось
из прошлых лет помню нечто подобное требовалось.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / РасширенныйCase...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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