Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / РасширенныйCase... / 6 сообщений из 6, страница 1 из 1
18.07.2003, 17:16
    #32212447
G&P
G&P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РасширенныйCase...
Возник вопрос. Можно ли найти замену такой ситуации: есть несколько вложенных 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
18.07.2003, 17:37
    #32212469
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РасширенныйCase...
Код: 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
18.07.2003, 17:43
    #32212479
G&P
G&P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РасширенныйCase...
2Владимир Саныч:
Красивое решение! Но...
А если нужно проверять не числовые значения, а, к примеру,
(IsNull(Dmax(бла-бла-бла1))=True) and (IsNull(Dmax(бла-бла-бла2)=False) and (IsNull(Dmax(бла-бла-бла3)=False)?
Как в этом случае быть? Неужто придется выстраивать огромную иерархию ифов?
...
Рейтинг: 0 / 0
18.07.2003, 17:50
    #32212493
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РасширенныйCase...
Если значения логические (типа 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
18.07.2003, 17:54
    #32212501
G&P
G&P
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РасширенныйCase...
Саныч, спасибо за мыслЮ...
...
Рейтинг: 0 / 0
18.07.2003, 20:49
    #32212628
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
РасширенныйCase...
саныч и мне понравилось
из прошлых лет помню нечто подобное требовалось.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / РасширенныйCase... / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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