powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Select case...
22 сообщений из 22, страница 1 из 1
Select case...
    #32464119
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access' 97, mdb...

Пишу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Select Case VarX and VarY
Case VarX = Null And VarY = Null
Prov = VarX + VarY +  1 
Case VarX = Null And VarY <> Null
Prov = VarY +  1 
Case VarX <> Null And VarY = Null
Prov = VarX +  1 
End Select


Переменные :VarX=8, VarY=Null

Так вот... Access смотрит все условия и ничего не выполняя переходит на End Case... Хотя, по логике, должнен выполнить третье выражение...

Это глюк или я ошибся в синтаксисе.
...
Рейтинг: 0 / 0
Select case...
    #32464130
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переходит на End Select.
...
Рейтинг: 0 / 0
Select case...
    #32464146
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты в debugere набери:
?8 <> Null

и ты увидишь, что ответ будет не True, а Null
и поэтому у тебя ниодно условие не выполняется.
...
Рейтинг: 0 / 0
Select case...
    #32464147
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
<>Null
=Null

Что это???
...
Рейтинг: 0 / 0
Select case...
    #32464152
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
че это вообще за херня???
кто так селекты пишет???
...
Рейтинг: 0 / 0
Select case...
    #32464158
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку (из help'a)

Null is the result of an explicit assignment of Null to a variable or any operation between expressions that contain Null
...
Рейтинг: 0 / 0
Select case...
    #32464185
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЛП:

Да не ругайся ты...

Я пробовал и isnull(VarX)=False...таже самая ерунда.

авторче это вообще за херня???
кто так селекты пишет???

А как надо правильно???

Мне нужно, если VarX=8 И VarY=Null, выполняется третье выражение.
...
Рейтинг: 0 / 0
Select case...
    #32464196
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Select Case True
Case isnull(VarX) And isnull(VarY)
Case isnull(VarX)
Prov = VarY + 1
Case isnull(Null)
Prov = VarX + 1
Case Else
Prov = VarX + VarY + 1
End Select
...
Рейтинг: 0 / 0
Select case...
    #32464199
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Мне нужно, если VarX= 8  И VarY=Null, выполняется третье выражение


у тебя в селекте в любой строчке результат равен Null

есть фунция Nz:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Select Case VarX and VarY
Case NZ(VarX, 0 ) =  0  And Nz(VarY, 0 ) =  0 
Prov = VarX + VarY +  1 
Case NZ(VarX, 0 ) =  0  And Nz(VarY, 0 ) <>  0 
Prov = VarY +  1 
Case NZ(VarX, 0 ) <>  0  And Nz(VarY, 0 ) =  0 
Prov = VarX +  1 
End Select

...
Рейтинг: 0 / 0
Select case...
    #32464202
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Select Case VarX and VarY
- это вообще полный абзац.
...
Рейтинг: 0 / 0
Select case...
    #32464206
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Prov = VarX + VarY + 1 будет равно Null
...
Рейтинг: 0 / 0
Select case...
    #32464209
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cорри, проглючил ;)
...
Рейтинг: 0 / 0
Select case...
    #32464217
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Select Case VarX and VarY
Case NZ(VarX, 0 ) =  0  And Nz(VarY, 0 ) =  0 
Prov = nz(VarX, 0 ) + nz(VarY, 0 ) +  1 
Case NZ(VarX, 0 ) =  0  And Nz(VarY, 0 ) <>  0 
Prov = nz(VarY, 0 ) +  1 
Case NZ(VarX, 0 ) <>  0  And Nz(VarY, 0 ) =  0 
Prov = nz(VarX, 0 ) +  1 
End Select

...
Рейтинг: 0 / 0
Select case...
    #32464221
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот и я думаю:
автор- это вообще полный абзац.

Я поэтому и спрашивал как правильно...


Мужики! Большое спасибо за науку!!!

Буду пробовать.
...
Рейтинг: 0 / 0
Select case...
    #32464227
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и наверное выражение можно так записать, без всяких Select Case:
Код: plaintext
Prov = Nz(VarX, 0 ) + Nz(VarY, 0 ) +  1 
...
Рейтинг: 0 / 0
Select case...
    #32464277
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 Kelme:
Да, так проще всего. Если только не стоит задача научиться пользоваться Select Case.

2 Daf:
Ты хоть понимаешь, что такое And? Даже если не знал, как работает Select Case.
...
Рейтинг: 0 / 0
Select case...
    #32464314
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТы хоть понимаешь, что такое And? Даже если не знал, как работает Select Case.

Понимаю...
...
Рейтинг: 0 / 0
Select case...
    #32464319
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
плинн. оппять я все смешное проспал

для автора:
т.к
?Null AND 1
Null
, то
VarX and VarY даст NULL (на входе вашего селекта)
т.е. получится Select Case Null
и посмотрим, что происходит дальше в этом случае:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Public Function testCase()
Select Case Null
Case Null
    Debug.Print  "Null" 
Case Not Null
    Debug.Print  "Not Null" 
Case Else
    Debug.Print  "Case Else" 
End Select
End Function

'_______тестируем__________'
?testCase
Case Else

(что, собсно, ожидалось
ибо
?Null = Null
Null
(а не -1), и
?Null = Not Null
Null
...
Рейтинг: 0 / 0
Select case...
    #32464358
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
T.e. в данном случае происходила операция логического И, а не выбор условия, как в запросе...
Т.е. 0*1=0, а в моем случае null.


Спасибо что объяснили! Всю жизнь живи и всю жизнь учись!
...
Рейтинг: 0 / 0
Select case...
    #32464560
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
автора не выбор условия, как в запросе...
Дело не в том, что запрос или не запрос. Дело в том, что операндами операции And дожны быть значения логического типа.
...
Рейтинг: 0 / 0
Select case...
    #32464600
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторДело не в том, что запрос или не запрос

Саныч, дело в том числе и в том. (в некотором смысле):
В отличии от селекта, WHERE (пере) вычисляется для каждой записи (т.е. с точки зрения бытовой логики - для каждого значения "переменных"), а селект, при попадании на себя, исчисляет значение выражения, и если в его теле переменные поменяют значения, перевычислять значения выражения не соберется :0).
...
Рейтинг: 0 / 0
Select case...
    #32464605
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай:

select case 2
case 1:
debug.print "one"
case 2:
debug print "two"
case 2:
debug.print "three"
case 3:
debug.print "four"
case else:
debug.print "five"
end select

вернет только two - т.е. басиковый select case отрабатывает только первый подходящий раздел.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Select case...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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