На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! `
Не забудьте заглянуть в VB6 FAQ, так как большая часть VB-примеров актуальна и для VBA-раздела ;)
Модераторы: Old Bat, MIF
  
    > Логические выражения

      Не увлекайтесь функциями IIF, Swich, Choose

      При всей своей внешней привлекательности эти функции работают весьма медленно.
      Например, в данном случае
      ExpandedWrap disabled
        IIF(x = y,y = 2*x,y = Ln(x)/cos(y))

      будут вычислены оба выражения, вне зависимости от результата проверки выражения "x = y"
      В VBA нет оптимизации логических выражений при компиляции, так что предпочтительней использовать if… then… end if или Select Case…End Select

      Приятное исключение: в отчетах и запросах ACCESS эти функции аналогичны if… then… end if

      Применяйте логическое присваивание в одной строке

      Например, данный код
      ExpandedWrap disabled
        If X = 0 then
           Y = true
        Else
           Y = false
        End if

      Можно записать так
      ExpandedWrap disabled
        Y = (x = 0)

      Переключение между логическими выражениями

      Если требуется поменять значение логической переменной на противоположное, можно сделать так:
      ExpandedWrap disabled
        If X=true then
           X = false
        Else
           X = true
        End if


      А можно так:
      ExpandedWrap disabled
        X = not X

      Помещайте код обработки наиболее вероятного случая в начало Select Case


      Использованы материалы: "From Access 2002 Desktop Developer's Handbook"
      Litwin, Getz, and Gunderloy. (Sybex, 2001)
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0191 ]   [ 17 queries used ]   [ Generated: 16.04.24, 12:39 GMT ]