VBA, MS Access MS Access в примерах

Номер класса (школы) по году или дате начала обучения

По году начала обучения:

Public Function GetClassName(iStartYear%, Optional vClassLetter = Null, Optional vForDate As Variant = Null) As Variant
'Возвращает название класса (Номер + Буква) по аргументам
'--------------------------------------------------------------------------
'Аргументы:
'   iStartYear    - Год начала обучения (Integer)
'   vClassLetter  - Опционально: Буква класса (по умолчанию = Null)
'   vForDate      - Опционально: Расчёт номера класса на конкретную дату
'--------------------------------------------------------------------------
'Пример экспдуотациив выражении:
'    GetClassName([ГодНачала];[БукваКласса];"28.8.2019")
'--------------------------------------------------------------------------
Dim i%, iClassNO%
On Error GoTo GetClassName_Err
    If IsNull(iStartYear) = True Then
        iStartYear = Year(Date)
    End If
    
    If IsNull(vForDate) = True Or IsDate(vForDate) = False Then
        vForDate = Date
    End If
    
    i = Month(vForDate)
    Select Case i
        Case Is < 9 ' * 1-е сентября = Начало начало уч. года
            iClassNO = Year(vForDate) - iStartYear
        Case Else
            iClassNO = Year(vForDate) - iStartYear + 1
    End Select
        
    Select Case iClassNO
        Case 1 To 11
            GetClassName = iClassNO & vClassLetter
        Case Else
            GetClassName = "Выпуск: " & iStartYear + 11
    End Select
    
GetClassName_Bye:
    Exit Function

GetClassName_Err:
    GetClassName = "Err#" & Err.Number
    'MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in Function: GetClass in module: mod_CommonApplication", vbCritical, "Error in Application: " & Err.Source
    Err.Clear
    Resume GetClassName_Bye
End Function


Вариант ("потяжелее")
- по дате начала обучения:

Public Function GetClassNameDT(Optional vDateStart As Variant = Null, Optional vClassLetter = Null, _
                                Optional vForDate As Variant = Null) As Variant
'Возвращает название класса (Номер + Буква) по аргументам
'--------------------------------------------------------------------------
'Аргументы:
'   vDateStart    - Опционально: Дата начала обучения
'                   (по умолчанию = 1 Сентября текущего года)
'   vClassLetter  - Опционально: Буква класса (по умолчанию = Null)
'   vForDate      - Опционально: Расчёт номера класса на конкретную дату
'--------------------------------------------------------------------------
'Пример экспдуотации в выражении:
'   GetClassNameDT([ДатаНачала];[БукваКласса];"28.8.2019")
'--------------------------------------------------------------------------
Dim i%, iClassNO%
On Error GoTo GetClassNameDT_Err
    If IsNull(vDateStart) = True Then vDateStart = DateSerial(Year(Date), 9, 1)
    
    If IsNull(vForDate) = True Or IsDate(vForDate) = False Then
        vForDate = Date
    End If
    
    i = Month(vForDate)
    Select Case i
        Case Is < 9 ' * 1-е сентября = Начало начало уч. года
            iClassNO = Year(vForDate) - Year(vDateStart)
        Case Else
            iClassNO = Year(vForDate) - Year(vDateStart) + 1
    End Select

    Select Case iClassNO
        Case 1 To 11
            GetClassNameDT = iClassNO & vClassLetter
        Case Else
            GetClassNameDT = "Выпуск: " & Year(vDateStart) + 11
    End Select
    
GetClassNameDT_Bye:
    Exit Function

GetClassNameDT_Err:
    GetClassNameDT = "Err#" & Err.Number
    Err.Clear
    Resume GetClassNameDT_Bye
End Function

Назад ToTop
L.E. 25.12.2017
Рейтинг@Mail.ru