Newsgroup: it.comp.appl.access
Titolo: Separare nome e cognome

Ciao a tutti,
Ho un campo che contiene il Nome e il Cognome.... vorrei separarli in 2
campi ; campo Cognome e campo Nome, come sarebbe corretto.
Come posso fare ??
Il nominativo è separato da uno spazio e il cognome è scritto in carattere
maiuscolo.......
se avete qualche idea
GRAZIE CIAO LUCA

 ha scritto nel messaggio
news:3cf241a5$1...@news.mediaset.it...

 Ciao Luca
Parto dal presupposto che il campo sia in una tabella!
Prova a fare un query che ti genera una nuova tabella dove creerai il campo
cognome e il campo nome sfruttando la funzione Left (o Right) come in
esempio
Cognome: Left(Str([iscritti.CognomeNome]);20)
 Nome: Right(Str([iscritti.CognomeNome);10)
Sostituisci la lunghezza dei caratteri da trimmare a seconda delle tue
esigenze (20 e 10)
Ciao
Ale

 Ale
Non č cosě semplice!
Chi ti dice che con il numero di caratteri prelevati non sfori e prelevi
parte del cognome (o del nome per chi viene da destra)?
Devi prima inspezionare la stringa e trovare la posizione dello spazio
separatore e poi spezzare la stringa a colpo sicuro.
Ci sono anche nomi e cognomi di piu' parole: se ricerchiamo piu' di uno
spazio nella stringa, come possiamo sapere a che parte attribuire il
segmento trovato, o meglio potremmo trovare Marco Van Basten o Gian Luca
Vialli..., in questo caso Van deve fare parte del cognome e Luca del nome.
E se uno si chiama Giovanni Maria Mastai Ferretti Papa Pio IX come la
mettiamo? :)
Ciao

 > prova cosi':
cognome: Left([tuocamponome];(InStr([tuocamponome];" ")-1))
nome: Right([tuocamponome];(Len([tuocamponome])-(InStr([tuocamponome];"
"))))

 maiuscolo.......
*SE* e' vero che il Cognome e' rigorosamente sempre in maiuscolo;
*SE* e' vero che le parole sono sempre e solo separate da *un solo* spazio;
allora il codice seguente potrebbe funzionare.
*SE* non ho sbagliato qualcosa, ovviamente... ;)
Eventualmente fammi (facci) sapere, grazie.
Option Explicit
Public Enum ParteNomeCOGNOMEEnum
  ParteNome = 1
  ParteCOGNOME = 2
End Enum
Sub TestGetParteNomeCOGNOME()
  Dim sNomeCOGNOME As String
  sNomeCOGNOME = "Maurizio BORRELLI"
  Debug.Print _
      "'" & GetParteNomeCOGNOME(sNomeCOGNOME, ParteCOGNOME) & "'" _
    , "'" & GetParteNomeCOGNOME(sNomeCOGNOME, ParteNome) & "'"
  sNomeCOGNOME = "Giovanni Maria MASTAI FERRETTI"
  Debug.Print _
      "'" & GetParteNomeCOGNOME(sNomeCOGNOME, ParteCOGNOME) & "'" _
    , "'" & GetParteNomeCOGNOME(sNomeCOGNOME, ParteNome) & "'"
End Sub
Public Function GetParteNomeCOGNOME( _
  ByVal NomeCOGNOME As String _
, ByVal ParteNomeCOGNOME As ParteNomeCOGNOMEEnum _
) As String
  Dim a_sParole() As String
  Dim lIndex      As Long
  Dim lPos        As Long
  a_sParole = Split(NomeCOGNOME, " ")
  For lIndex = LBound(a_sParole) + 1 To UBound(a_sParole)
    lPos = lPos + Len(a_sParole(lIndex - 1)) + 1
    If Asc(Mid$(a_sParole(lIndex), 2, 1)) > Asc("Z") Then
      lPos = lPos + Len(a_sParole(lIndex)) + 1
      Exit For
    End If
  Next
  Select Case True
  Case ParteNomeCOGNOME = ParteNome
    GetParteNomeCOGNOME = Mid$(NomeCOGNOME, 1, lPos - 1)
  Case ParteNomeCOGNOME = ParteCOGNOME
    GetParteNomeCOGNOME = Mid$(NomeCOGNOME, lPos + 1)
  Case Else
  End Select
End Function
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:acve72$djg$1...@newsreader.mailgate.org...
