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

ФИО полностью по Имени, Фамилии и Отчеству с нормализацией строки

Public Function GetFIO(vFamilia As Variant, vImja As Variant, vOtchestvo As Variant, _
    Optional bInLongFormat As Boolean) As Variant
'es 19.04.2018 - LE 25.09.2020 - v002
'ФИО полностью по Имени, Фамилии и Отчеству
'Возвращает ФИО с нормализацией строки (или ничего)
'--------------------------------------------------------------------------
'   VBE: ?GetFIO("фАмилия-двойнаЯ","ИмЯ","ОтчЕствО",-1)
'   QBE: FullName: GetFIO([TestSurname];[TestName];[TestPatronymic];-1)
'--------------------------------------------------------------------------
'Аргументы:
'   vFamilia      = Фамилия
'   vImja         = Имя
'   vOtchestvo    = Отчество
'   bInLongFormat = Краткий или длинный формат = По умолчанию краткий
'       Краткий формат = Пушкин А.С.
'       Длинный формат = Пушкин Александр Сергеевич
'--------------------------------------------------------------------------
Dim iLen%, sTemp$
On Error GoTo GetFIO_Err

'Фамилия
    If IsNull(vFamilia) = False Then 'Фамилия указана
        iLen = InStr(vFamilia, "-")
        If iLen = 0 Then
            'Простое составление с нормализацией строки
            GetFIO = UCase(Mid(vFamilia, 1, 1)) & Mid(vFamilia, 2)
        Else 'Двойная фамилия
            sTemp = Mid(vFamilia, 1, iLen - 1)
            sTemp = Trim(sTemp)
            sTemp = StrConv(sTemp, 3)
            GetFIO = sTemp
            sTemp = Mid(vFamilia, iLen + 1)
            sTemp = Trim(sTemp)
            sTemp = StrConv(sTemp, 3)
            GetFIO = GetFIO & "-" & sTemp
        End If
    Else 'Фамилии нет
        GetFIO = "!Фамилия!"
    End If

'Имя
    If IsNull(vImja) = False Then 'Имя указано
        If bInLongFormat = False Then
            GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & "."
        Else 'Полностью с нормализацией строки
            GetFIO = GetFIO & " " & StrConv(vImja, 3)
        End If
    Else
        If bInLongFormat = False Then
            GetFIO = GetFIO & " " & "!Имя!."
        End If
    End If

'Отчество
    If IsNull(vOtchestvo) = False Then 'Отчество указано
        If bInLongFormat = False Then
            GetFIO = GetFIO & UCase(Mid(vOtchestvo, 1, 1)) & "."
        Else 'Полностью с нормализацией строки
            GetFIO = GetFIO & " " & StrConv(vOtchestvo, 3)
        End If
    End If

GetFIO_Bye:
    Exit Function

GetFIO_Err:
    Err.Clear
    Resume GetFIO_Bye
End Function


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