Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пора-пора-порадуемся iif'у глючному ;))) / 12 сообщений из 12, страница 1 из 1
21.07.2003, 13:32
    #32213459
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
Народ!
Полюбуйтесь, что пишет всеми любимая компания про свою функцию
и глюки в ней.
ЭТО ВАЖНО!!!


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnacbk02/html/odc_4009c15.asp

topic: Test 17: watch out for IIf—it doesn't short-circuit

...Beyond any optimization considerations, IIf is very dangerous when dealing with numeric values and division. If this was your expression:

dblNew = IIf(intY = 0, 0, intX/intY)

it would appear that you had appropriately covered your bases. Your code checks to make sure intY isn't 0 and returns an appropriate value if it is, rather than attempting to divide by 0. Unfortunately, if y is 0, this statement will still cause a runtime error. Because VBA will evaluate both portions of the IIf expression, the division by 0 will occur and will trigger an error. In this case, you need to either trap for the error or use the If . . . Then . . . Else statement. (See Test17a/b for the full test procedures.)

Note: The IIf function used in Access queries, forms, or reports doesn't have this same behavior—that is, it works as you'd expect it to in those places. It's only in VBA code, in a module, where you need to avoid IIf because of its overzealous evaluation tendencies.
...
Рейтинг: 0 / 0
21.07.2003, 13:39
    #32213475
JQ
JQ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
А по русски можно?
...
Рейтинг: 0 / 0
21.07.2003, 13:42
    #32213484
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
Блин, как вы хэлп-то читаете без энгл?!
А-а-а-а! Ведь есть форум ;)))

Кратко смысл:
НЕ ЮЗАЙТЕ iif( ) в коде VBA -
глюпый васик вычисляет оба возвращаемых выражения
(и истину, и ложь), что
а) замедляет работу проги ;)))))
б) может приводить к ошибкам - типа как в примере выше деление на 0
- вместо нее юзайте нормальный

If Then
Else
End if


А далее примечание:
"А вот в запросах / формах / отчетах у нас все работает!!!"

Ну чем не кони?
;))))))))))))))))))))
...
Рейтинг: 0 / 0
21.07.2003, 13:53
    #32213503
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
давно известная фича :)
Switch'а вроде тоже касается.
...
Рейтинг: 0 / 0
21.07.2003, 13:53
    #32213504
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
А что конкретно тебя так обрадовало? То, что IIf обе части вычисляет? Ну так порадуйся еще и на Switch и на Choose.
Это нормально. Даже в хелпе описано. Все гут.
В запросах, кстати, еще веселее. Можно, например, третий аргумент опустить (несмотря на то что он обязательный)
...
Рейтинг: 0 / 0
21.07.2003, 13:54
    #32213505
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
пункт б) может приводить к ошибкам - типа как в примере выше деление на 0
я 2 года назад это выяснила (что именно в модуле глючит а в репорте нет
у меня как раз был случай деление на 0 )- доооолго понять не могла почему в репорте работает , а в коде нет

только я думала что уже все знают про iif'

в общем всё как всегда- век живи, век учись, дураком помрёшь
...
Рейтинг: 0 / 0
21.07.2003, 13:58
    #32213511
wara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
Синтерс в книжке "Отладка на VB" прямо советует не использовать этот IIF
...
Рейтинг: 0 / 0
21.07.2003, 14:00
    #32213517
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
Да и Гетц тоже советует. И майкрософт советует. Все, в общем, советуют, но все равно все пользуются.
...
Рейтинг: 0 / 0
21.07.2003, 14:25
    #32213574
JQ
JQ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
Пользуемся, в запросах без него никак.
...
Рейтинг: 0 / 0
21.07.2003, 14:31
    #32213584
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
А в запросах с ним все нормально
...
Рейтинг: 0 / 0
21.07.2003, 14:55
    #32213632
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
>Пользуемся, в запросах без него никак.

Вот вам лишнее подтверждение *читаемости* ответов
;)))
...
Рейтинг: 0 / 0
21.07.2003, 17:52
    #32213907
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пора-пора-порадуемся iif'у глючному ;)))
>давно известная фича :)

Кому известная? Ко-ри-фе-ям ;)
А форум, как выясняется, для тех, кто просит перевод из англ. хэлпа...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пора-пора-порадуемся iif'у глючному ;))) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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