Newsgroup: it.comp.appl.access
Titolo: Iniziali di Nome e Cognome

Buongiorno
Ero un pischellino la prima volta che capitai in questo mitico
newsgroup!!
Vedo che siete sempre in tanti, compresi gli "storici" ...
Un piccolo aiutino
Su aggiornamento di una casella di testo che contiene Nome e Cognome,
avrei bisogno di inserire in un campo non associato le 2 sole
iniziali.
Me.Iniziali=left(Me.Partecipante, 1) & ............
Ricordo la funzione left( miocampo,1) , ma non ricordo come passare
poi alla seconda parola e fare la stessa operazione.
Ciao
Pietro

 ha scritto nel messaggio 
news:3401d8aa-b4f9-4c73...@34g2000hsh.googlegroups.com...

Ciao Pietro,
per forza non lo ricordi č un po' complicato!
Vediamo :
Me.Iniziali=left(Me.Partecipante, 1) & Left(Mid(me.Partecipante, 
Instr(Me.partecipante, " ")+1, len(me.partecipante)),1)
se non ho  dimenticato qualche parentesi dovrebbe essere cosě, tieni 
presente che non darebbe il risultato atteso se il cognome č composti 
di 2 parti tipo (De Rossi Roberto) e anche nel caso in cui non 
inseriscano il nome ma solo il cognome
-- 
Cinzia [Office Access MVP]
_______________________
 
www.riolab.org
http://accessdaziacin.live.spaces.com
---------------------------------------- 

 ha scritto nel messaggio 
news:3401d8aa-b4f9-4c73...@34g2000hsh.googlegroups.com...

Non è così semplice, ancor più perchè mi pare di capire che nome e cognome 
sono registrati nel medesimo campo...giusto?
Si perchè altrimenti sarebbe molto semplice....Left(....;1)
 Tutto dipende dalla gestione di nome e cognome composti.
Es. Per un nome tipo...LUCA ROSSI
                                   PIER FRANCESCO ROSSI
                                   LUCA DE ROSSI
                                   PIER FRANCESCO DE GIORGI
Come li gestisci?
Io riesco a gestire i primi tre casi ma l'ultimo lo devo ancora risolvere e 
non so se si potrà...ben vemga comunque chi trovasse la soluzione.
Nel frattempo puoi gestire il tuo problema così:
In riferimento al campo "Nominativo"
Iniziali:
Left(Left([Nominativo];Len([NOMINATIVO])-Len(Mid([Nominativo];InStr([Nominativo];" 
")+Len(Left(Mid([Nominativo];InStr([Nominativo];" 
")+1);InStr(Mid([Nominativo];InStr([Nominativo];" ")+1);" "))))));1) & 
Left(Mid([Nominativo];InStr([Nominativo];" 
")+Len(Left(Mid([Nominativo];InStr([Nominativo];" 
")+1);InStr(Mid([Nominativo];InStr([Nominativo];" ")+1);" ")+1)));1)
Ciao
-- 
Roberto da Parma

 - Mostra testo citato -
Ciao Cinzia, grazie
in effetti non avevo pensato ai cognomi composti.
Forse mi conviene rielaborare il db che ho in mano e separare i nomi
dai cognomi facendoli diventare due campi.
Ma rimarrebbe il problema dei " De Stefano"
uhmmm...mi devo inventare qualcosa d'altro ?
Pietro

 - Mostra testo citato -
Si, sono "purtroppo" tutti in un solo campo ..grrr
Rispondevo per l'appunto a Cinzia che non avevo considerato i cognomi
composti.
La tua sarebbe la soluzione ottimale, visto che sei andato oltre il
terzo
Mi chiedo solo se non sia utile "rielaborare" il recordset e creare
almeno due campi separati
in modo da avere per ogni campo solo due possibilità.
Altrettanto vero è che fatto una volta il lavoraccio, ci sarebbero
solo gli aggiornamenti quotidiani.
Grazie
Pietro

 ha scritto nel messaggio 
news:323ab337-8691-4af5...@c58g2000hsc.googlegroups.com...





Grazie
Pietro
Se sei all'inizio io ti consiglio vivamente di considerare due campi NOME e 
COGNOME.
Non t'immagini forse che casini possono saltar fuori....uno su tutti...se 
quando inseriscono mettono cognome e nome oppure nome e cognome?Eh...son 
dolori...
La suddivisione iniziale dei dati che hai la puoi fare sempre con il codice 
che ti ho mandato basta che togli i due left per ogni parte.
Left(........;1) & Left( .....,1)
Butti tutto in una query di aggiornamento e il 4 caso (spero pochi record) 
te li aggiusti a mano.


 ha scritto nel messaggionews:323ab337-8691-4af5...@c58g2000hsc.googlegroups.com...

;.))) da come parli devi già averci sbattuto il muso ..eh eh
Sono all'inizio ma ho ereditato delle tabelle fatte così. Vai a capire
perchè è stata fatta in quel modo
Faccio come suggerisci tu, mi sembra la soluzione migliore..
Ciao

 ha scritto nel messaggio 
news:72d60825-b645-415b...@m44g2000hsc.googlegroups.com...



Ciao
Diciamo che mi ci sono imbattuto....
Con quel codice riesci a dividere appunto tra nome e cognome la maggior 
parte dei record.


don.pete...@gmail.com
 ha scritto:

Sempre che tu *non* abbia a disposizione il codice fiscale e sei su 
versione > a97 io consiglierei la seguente
aAnag = split(campoanagrafico," ")
ix = ubound(aAnag)
se cognome nome
risultato = left(aAnag(0),1) & left(aAnag(ix),1)
questa non e' deterministica se il soggetto ha doppio nome (prende 
l'ultimo nome)
se nome cognome (e' un casino, e' meno precisa della precedente, falisce 
con il doppio nome)
risultato =  iif(ix=1,left(aAnag(1),1) ,left(aAnag(ix-1),1) & 
left(aAnag(0),1)
--
ac

 left(aAnag(0),1)
corrige: dimenticata una parentesi
risultato =  iif(ix=1,left(aAnag(1),1) ,left(aAnag(ix-1),1) ) & 
left(aAnag(0),1)
--
ac


grazie, lo proverò. Non conoscevo la funzione Ubound e l'help non mi
aiuta a comprendere
appieno la funzione.
Sembra una funzione per restituire un valore Long.
Mi potresti spiegare, se hai tempo, voglia, come puo' essere
utilizzata praticamente, come in questo caso , sulle stringhe
di testo?
thnx
Pietro

don.pete...@gmail.com
 ha scritto:

La ubound restituisce la dimensione (indice massimo) di un array non fa 
null'altro e non e' applicabile alle stringhe
Se vuoi invece la spiegazione del codice e' questa:
aAnag = split(campoanagrafico," ")
Genera un array  usando come separatore lo spazio
i.e. Delli Colli Giuseppe Mario
l'array comtiene 4 elementi ed il suo uBound (upper Bound=limite 
superiore) e' 3
ix = ubound(aAnag)
indice messo su ix per comodita'
se cognome nome
risultato = left(aAnag(0),1) & left(aAnag(ix),1)
se si usa l'esempio precedente in risultato trovi "DM"
Dell'omodarme Vittorio
in risultato c'e' "DV"
Dell' Omodarme Vittorio
in risultato c'e' "DV"
Serbelloni Mazzanti Vien dal Mare Giuseppe mario Francesco
in riultato c'e' "SF"
--
ac