LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Автору са...
 Тема: Автору сайта
 
 15.06.2007 21:03:37
All
4316 сообщения
1-ый


Тема: Автору сайта
В своей базе мне часто необходимо при вычислениях получать положительную результирующую, т.е. если результат отрицательный - он приравнивается к нулю. Само собой напрашивается использование ф-ции IIf(). Из-за интенсивного использования последней очень увеличивается время пересчета. В Ваших советах по оптимизации читал о целесообразности замены ф-ции IIf() на If...Then ...Else. Как я понял - это в VBA. Стоит ли для повышения быстродействия писать пользовательскую ф-цию на основе If...Then ...Else вместо ф-ции IIf()? И еще, какая процедура выполнится быстрее:
- i=a-b
If i<0 Then i=0
или
If (a-b)>0 Then i=a-b Else i=0
Заранее спасибо


P.S. Проблемы с базой данных
Автор: ALEX от 0:00:00 Источник ...
 15.06.2007 21:03:37
All
4316 сообщения
1-ый


RE: Автору сайта
Совсем необязательно использовать VBA
Например выражение
V1: -([T2]![F1]-[T2]![F0])*([T2]![F1]>[T2]![F0])
Выполняется быстрее, чем IIF
Выбор конечно зависит от сложности расчета.
ret = -(v1 - v2) * (v1 > v2)
несколько быстрее чем
ret = v1 - v2
If ret < 0 Then ret = 0
и оба примера быстрее чем
If (v1 - v2) > 0 Then
ret = v1 - v2
Else
ret = 0
End If





P.S. Проблемы с базой данных
Автор: Anonymous от 0:00:00 Источник ...
 15.06.2007 21:03:37
All
4316 сообщения
1-ый


RE: Автору сайта
Забыл уточнить. Вычисления производятся в запросах. Мне нужно оптимизировать выполнение запроса


P.S. Проблемы с базой данных
Автор: ALEX от 0:00:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Автору са...
ПоискПоиск  Список форумовСписок форумов  
right