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