Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как определить порядковый номер месяца в квартале
 
 автор: Ivanko   (07.04.2009 в 19:34)   личное сообщение
 
 

Например: во втором квартале апрель - 1, май - 2, июнь - 3
Мой вариант
Function MonthOfQuarter(Optional dteDate As Date) As Byte
MonthOfQuarter = IIf(Month(dteDate) Mod 3 = 0, 3, Month(dteDate) Mod 3)
End Function

Может кто-нибудь предложит более наглядный вариант?

  Ответить  
 
 автор: Lukas   (07.04.2009 в 20:24)   личное сообщение
 
 


Public Function funMonthOfQuarter(dteDate As Date) As Long
    Select Case Month(dteDate)
        Case 1, 4, 7, 10
            funMonthOfQuarter = 1
        Case 2, 5, 8, 11
            funMonthOfQuarter = 2
        Case 3, 6, 9, 12
            funMonthOfQuarter = 3
    End Select
End Function


Более наглядно, и работает в полтора раза быстрее.

  Ответить  
 
 автор: Denis V.   (07.04.2009 в 23:34)   личное сообщение
 
 

Согласен с Lukas, что более наглядно. Можно ведь и так: i - ((i - 1) \ 3) * 3, где i - номер месяца. Только кто через неделю скажет, что это за выражение такое :-)

  Ответить  
 
 автор: Lukas   (08.04.2009 в 00:48)   личное сообщение
 
 


Public Function funMonthOfQuarter(dteDate As Date) As Long
    Dim i As Long
    i = Month(dteDate)
    funMonthOfQuarter = i - ((i - 1) \ 3) * 3
End Function

В таком варианте работает на 10 % быстрее, чем вариант с Select Case.

  Ответить  
 
 автор: Ivanko   (08.04.2009 в 12:17)   личное сообщение
 
 

Здорово. Подобным способом изначально и пытался что нибудь подобрать.

Вот это да - "/" отличается от "\"

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList