MyTetra Share
Делитесь знаниями!
Номер класса (школы) по году или дате начала обучения
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - msa.polarcom.ru - 14 Преобразование Чисел и Дат
Запись: xintrea/mytetra_db_adgaver_new/master/base/15320183951d5nlo9lf4/text.html на raw.githubusercontent.com

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

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

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




Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования