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

ФИО по Имени, Фамилии и Отчеству

Public Function GetFIO(vFamilia As Variant, vImja As Variant, vOtchestvo As Variant) As Variant
'es 17.04.2018
'Возвращает ФИО (Или ничего) по аргументам:
'   vFamilia   =  Фамилия
'   vImja      =  Имя
'   vOtchestvo =  Отчество
'--------------------------------------------------------------------------
On Error GoTo GetFIO_Err
    If Len(vFamilia & "") > 0 Then 'Фамилия указана
        GetFIO = vFamilia & " "
    Else
        Exit Function 'Фамилии нет - на выход!
    End If

    If Len(vImja & "") > 0 Then 'Имя указано
        GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & "."
    Else
        Exit Function
    End If

    If Len(vOtchestvo & "") > 0 Then 'Отчество указано
        GetFIO = GetFIO & UCase(Mid(vOtchestvo, 1, 1)) & "."
    End If

GetFIO_Bye:
    Exit Function

GetFIO_Err:
    Err.Clear
    Resume GetFIO_Bye
End Function



Более сложный вариант:

Public Function GetFIO(vFamilia As Variant, vImja As Variant, vOtchestvo As Variant, _
    Optional bInLongFormat As Boolean) As Variant
'es 19.04.2018
'Возвращает ФИО (Или ничего) по аргументам:
'   vFamilia      = Фамилия
'   vImja         = Имя
'   vOtchestvo    = Отчество
'   bInLongFormat = Краткий или длинный формат = По умолчанию краткий
'       Краткий формат = Пушкин А.С.
'       Длинный формат = Пушкин Александр Сергеевич
'--------------------------------------------------------------------------
On Error GoTo GetFIO_Err
    If Len(vFamilia & "") > 1 Then 'Фамилия указана
        'Простое составление с нормализацией строки
        GetFIO = UCase(Mid(vFamilia, 1, 1)) & LCase(Mid(vFamilia, 2))
    Else
        If bInLongFormat = False Then Exit Function 'Фамилии нет и формат краткий- на выход!
    End If

    If Len(vImja & "") > 1 Then 'Имя указано
        If bInLongFormat = False Then
            GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & "."
        Else
            'Простое составление с нормализацией строки
            GetFIO = GetFIO & " " & UCase(Mid(vImja, 1, 1)) & LCase(Mid(vImja, 2))
        End If
    Else
        If bInLongFormat = False Then Exit Function
    End If

    If Len(vOtchestvo & "") > 1 Then 'Отчество указано
        If bInLongFormat = False Then
            GetFIO = GetFIO & UCase(Mid(vOtchestvo, 1, 1)) & "."
        Else
            'Простое составление с нормализацией строки
            GetFIO = GetFIO & " " & UCase(Mid(vOtchestvo, 1, 1)) & LCase(Mid(vOtchestvo, 2))

        End If
    
    End If

GetFIO_Bye:
    Exit Function

GetFIO_Err:
    Err.Clear
    Resume GetFIO_Bye
End Function
Назад ToTop
L.E. 19.04.2018
Рейтинг@Mail.ru