1

У меня есть база данных Access, где столбец полей содержит имена, где имя является первым, а фамилия является последней. Я хотел бы иметь возможность поменять местами, чтобы они были Фамилия имя, имя, фамилия. Например, я хотел бы

Боб Смит

становиться

Смит, Боб

Кто-нибудь знает, можно ли это сделать в Access?

Спасибо

2 ответа2

3

Зависит от того, как вы хотите это сделать. Я бы использовал функцию, а не писал сложный SQL. Вот функция, которая сделает это:

  Public Function SwapNames(ByVal varOriginalName As Variant) As Variant
    Dim strOriginalName As String
    Dim lngLastNameStart As Long
    Dim strLastName As String
    Dim strFirstName As String

    If IsNull(varOriginalName) Or InStr(varOriginalName, " ") = 0 Then
       SwapNames = varOriginalName
    Else
       strOriginalName = varOriginalName
       lngLastNameStart = InStrRev(strOriginalName, " ") + 1
       strLastName = Mid(strOriginalName, lngLastNameStart)
       strFirstName = Left(strOriginalName, lngLastNameStart - 2)
       SwapNames = strLastName & ", " & strFirstName
    End If
  End Function

Это возвращает эти значения:

  ?SwapNames(Null)
  Null
  ?SwapNames("Fenton")
  Fenton
  ?SwapNames("David Fenton")
  Fenton, David
  ?SwapNames("David W. Fenton")
  Fenton, David W.

... и вы просто используете его в своем SQL таким образом:

  UPDATE tblPerson
  SET tblPerson.FullName = SwapNames(tblPerson.FullName)

Теперь, если вы хотите сделать это только на SQL, это более сложно и действительно грязно. Если ты этого хочешь, просто спроси, и я попробую.

0

Можете ли вы создать другое поле, которое выполняет запрос на доступ и редактирует строку? Я не очень знаком с Access. Я знаю, что вы можете сделать это в Excel. И, возможно, это вариант. Экспортируйте данные в Excel, отредактируйте строку с формулами, а затем обновите таблицу Access, чтобы иметь поле для имени и фамилии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .