Como trocar primeiro e último nomes no MS Access

1

Eu tenho um banco de dados do Access onde uma coluna de campos contém nomes onde o primeiro nome é o primeiro e o sobrenome é o último. Eu gostaria de ser capaz de trocar, em seguida, por isso eles são sobrenome primeiro, primeiro nome por último. Por exemplo, eu gostaria de

Bob Smith

para se tornar

Smith, Bob

Alguém sabe se isso pode ser feito no Access?

Obrigado

    
por JimDel 13.02.2010 / 17:22

2 respostas

3

Depende de como você deseja fazer isso. Eu usaria uma função em vez de escrever SQL complicado. Aqui está uma função que faria isso:

  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

Isso retorna esses valores:

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

... e você só usaria no seu SQL assim:

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

Agora, se você quiser fazer isso apenas em SQL, é mais complicado e confuso. Se você quiser, é só pedir, e eu vou tentar.

    
por 14.02.2010 / 01:01
0

Você pode criar outro campo que execute uma consulta sobre o acesso e edite a string? Eu não estou muito familiarizado com o Access. Eu sei que você pode fazer isso no Excel. E talvez seja uma opção. Exporte os dados para o excel, edite a string com fórmulas e atualize a tabela do Access para ter um campo para o nome e sobrenome.

    
por 13.02.2010 / 17:54