Как поменять местами имена и фамилии в MS Access
У меня есть база данных Access, где столбец полей содержит имена, где имя является первым, а фамилия является последней. Я хотел бы иметь возможность поменять местами, чтобы они были Фамилия имя, имя, фамилия. Например, я хотел бы
Боб Смит
становиться
Смит, Боб
Кто-нибудь знает, можно ли это сделать в Access?
Спасибо
2 ответа
Зависит от того, как вы хотите это сделать. Я бы использовал функцию, а не писал сложный 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, это более сложно и действительно грязно. Если ты этого хочешь, просто спроси, и я попробую.
Можете ли вы создать другое поле, которое выполняет запрос на доступ и редактирует строку? Я не очень знаком с Access. Я знаю, что вы можете сделать это в Excel. И, возможно, это вариант. Экспортируйте данные в Excel, отредактируйте строку с формулами, затем обновите таблицу Access, чтобы иметь поле для имени и фамилии.