Discussione:
Iniziali di Nome e Cognome
(troppo vecchio per rispondere)
d***@gmail.com
2008-08-06 13:38:30 UTC
Permalink
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
Cinzia
2008-08-06 14:19:24 UTC
Permalink
Post by d***@gmail.com
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
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
----------------------------------------
d***@gmail.com
2008-08-06 14:33:46 UTC
Permalink
Post by Cinzia
Post by d***@gmail.com
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
Ciao Pietro,
per forza non lo ricordi è un po' complicato!
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.orghttp://accessdaziacin.live.spaces.com
----------------------------------------- Nascondi testo citato
- 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
Roberto da Parma
2008-08-06 14:23:12 UTC
Permalink
Post by d***@gmail.com
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
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
d***@gmail.com
2008-08-06 14:42:58 UTC
Permalink
Post by Roberto da Parma
Post by d***@gmail.com
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
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.
In riferimento al campo "Nominativo"
Left(Left([Nominativo];Len([NOMINATIVO])-Len(Mid([Nominativo];InStr([Nomina­tivo];"
")+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- Nascondi testo citato
- 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
Roberto da Parma
2008-08-06 15:15:45 UTC
Permalink
Post by Roberto da Parma
Post by d***@gmail.com
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
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.
In riferimento al campo "Nominativo"
Left(Left([Nominativo];Len([NOMINATIVO])-Len(Mid([Nominativo];InStr([Nomina­tivo];"
")+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- Nascondi testo citato
- 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

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.

Ciao
--
Roberto da Parma
d***@gmail.com
2008-08-06 15:44:32 UTC
Permalink
Post by d***@gmail.com
Post by Roberto da Parma
Post by d***@gmail.com
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
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.
In riferimento al campo "Nominativo"
Left(Left([Nominativo];Len([NOMINATIVO])-Len(Mid([Nominativo];InStr([Nomina­­tivo];"
")+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- Nascondi testo citato
- 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
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.
Ciao
--
Roberto da Parma- Nascondi testo citato
- Mostra testo citato -
;.))) 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
Roberto da Parma
2008-08-06 15:48:31 UTC
Permalink
Post by d***@gmail.com
Post by Roberto da Parma
Post by d***@gmail.com
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
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.
In riferimento al campo "Nominativo"
Left(Left([Nominativo];Len([NOMINATIVO])-Len(Mid([Nominativo];InStr([Nomina­­tivo];"
")+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- Nascondi testo citato
- 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
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.
Ciao
--
Roberto da Parma- Nascondi testo citato
- Mostra testo citato -
;.))) 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

Diciamo che mi ci sono imbattuto....
Con quel codice riesci a dividere appunto tra nome e cognome la maggior
parte dei record.

Ciao
--
Roberto da Parma
Alessandro Cara
2008-08-06 18:08:33 UTC
Permalink
Post by d***@gmail.com
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.
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
Alessandro Cara
2008-08-06 18:18:06 UTC
Permalink
Alessandro Cara ha scritto:
[cu]
Post by Alessandro Cara
risultato = iif(ix=1,left(aAnag(1),1) ,left(aAnag(ix-1),1) &
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
d***@gmail.com
2008-08-06 19:28:26 UTC
Permalink
[cu]> risultato =  iif(ix=1,left(aAnag(1),1) ,left(aAnag(ix-1),1) &
Post by Alessandro Cara
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
Alessandro Cara
2008-08-06 19:41:04 UTC
Permalink
Post by d***@gmail.com
[cu]> risultato = iif(ix=1,left(aAnag(1),1) ,left(aAnag(ix-1),1) &
Post by Alessandro Cara
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?
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

Continua a leggere su narkive:
Loading...