|
|
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
Народ! Полюбуйтесь, что пишет всеми любимая компания про свою функцию и глюки в ней. ЭТО ВАЖНО!!! 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 13:32 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
А по русски можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 13:39 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
Блин, как вы хэлп-то читаете без энгл?! А-а-а-а! Ведь есть форум ;))) Кратко смысл: НЕ ЮЗАЙТЕ iif( ) в коде VBA - глюпый васик вычисляет оба возвращаемых выражения (и истину, и ложь), что а) замедляет работу проги ;))))) б) может приводить к ошибкам - типа как в примере выше деление на 0 - вместо нее юзайте нормальный If Then Else End if А далее примечание: "А вот в запросах / формах / отчетах у нас все работает!!!" Ну чем не кони? ;)))))))))))))))))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 13:42 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
давно известная фича :) Switch'а вроде тоже касается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 13:53 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
А что конкретно тебя так обрадовало? То, что IIf обе части вычисляет? Ну так порадуйся еще и на Switch и на Choose. Это нормально. Даже в хелпе описано. Все гут. В запросах, кстати, еще веселее. Можно, например, третий аргумент опустить (несмотря на то что он обязательный) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 13:53 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
пункт б) может приводить к ошибкам - типа как в примере выше деление на 0 я 2 года назад это выяснила (что именно в модуле глючит а в репорте нет у меня как раз был случай деление на 0 )- доооолго понять не могла почему в репорте работает , а в коде нет только я думала что уже все знают про iif' в общем всё как всегда- век живи, век учись, дураком помрёшь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 13:54 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
Синтерс в книжке "Отладка на VB" прямо советует не использовать этот IIF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 13:58 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
Да и Гетц тоже советует. И майкрософт советует. Все, в общем, советуют, но все равно все пользуются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 14:00 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
Пользуемся, в запросах без него никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 14:25 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
А в запросах с ним все нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 14:31 |
|
||
|
Пора-пора-порадуемся iif'у глючному ;)))
|
|||
|---|---|---|---|
|
#18+
>Пользуемся, в запросах без него никак. Вот вам лишнее подтверждение *читаемости* ответов ;))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2003, 14:55 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32213511&tid=1680399]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 337ms |

| 0 / 0 |
