Newsgroup: it.comp.appl.access
Titolo: Funzione Right?

In "frmNominativi" con origine "tblNominativi" ho  una input box
"ctlSwap" non associata che riceve una stringa di testo (tramite un
copia-incolla da EPG su Internet) nella forma "Gianni Rossi" oppure
"Gianni Antonio Rossi" (senza virgolette!). 
Nella stessa Form ho input box associate tra cui "ctlCognome" e
"ctlNome".
Ad  apertura maschera - inserimento nuovo record, ctlSwap riceve la
sua stringa prima di tutte le altre.
Con quale sintassi potrei passare (su attivati?) a ctlCognome la parte
di stringa Rossi e a ctlNome tutto il resto della stringa?
(Suppongo si tratti di ricorrere alla funzione Right, dichiarando tra
le variabili anche lo spazio, ma non riesco a farlo).
Ciao e grazie

 wrote in message
news:pii71ucog3o8nrd7l...@4ax.com...

Non č cosě semplice, perchč nel caso la Stringa sia composta da 3 parti come
hai riportato in esempio come distingui se sono le prime 2 a far parte del nome
piuttosto che la prima solo...??
In ogni caso per spezzare la Stringa principale devi ricorrere all'istruzione
Right, Left e Mid individuando la posizione dello spazio con Instr(Stringa," ")
Es:
Stinga="Mario Rossi"
Nome=Left(Stringa,Instr(Stringa," ")-1) 'forse il "-1" non serve....
Cognome=Right(Stringa,Len(stringa)-Len(Nome)-1)
Il caso si complica se hai 3 parti, in questo caso io utilizzerei sempre
la Funzione MID in un ciclo che verifica la presenza di spazzi....!
@Alex
-- 
Posted from  [62.98.108.160] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG


wrote:

Dopo vari tentativi ed errori, partendo dal suggerimento, ho risolto
in modo un po' grezzo la faccenda delle 3 parti in questo modo:
Dim strSwap, strCognometemp, strNome, strMiddle, strCognome
    If Not IsNull(Me!ctlSwap) Then
strSwap = Me!ctlSwap
strNome = Left(strSwap, InStr(strSwap, " ") - 1)
strCognometemp = Right(strSwap, Len(strSwap) - Len(strNome) - 1)
strMiddle = Left(strCognometemp, InStr(strCognometemp, " "))
strCognome = Right(strSwap, Len(strSwap) - Len(strMiddle) -
Len(strNome) - 1)
Me!Cognome = "" & strCognome & ""
Me!Nome = "" & strNome & "" & " " & "" & strMiddle & ""
.......
Sarebbe stato bello avere a disposizione la funzione "EndStr"!
Tenuto conto che sono ancora troppo novello per ....ciclare,
qualcuno ha il tempo e/o la voglia di mostrarmi una soluzione piů
elegante?
Grazie, Alex
Pino

 wrote in message
news:r89a1ugtd54n9ccl9...@4ax.com...
PINO.
Il problema non è fare la Funzione o Sub che "elegantemente" fa quello
che poi hai ottenuto te, ma come ti dicevo discriminare se si tratta
di un "CAMPO" composto da 2Testi Nome +1Cognome Es.:
Stringa="Paolo Francesco Rossi"---> NOME="Paolo Francesco" COGNOME="Rossi"
Sarebbe anche semplice, ma se fosse così:
Stringa="Paolo Di Francesco"---> Nome="Paolo" COGNOME="Di Francesco"
Chi dice al Programma quali sono le possibilità di attribuzione al nome
 piuttosto che al cognome....! Ritengo la cosa impossibile....!
Per questo motivo la gestione dei campi Nome+Cognome deve essere fatta
separatamente: CAMPO(Nome,Cognome)
Ciao @Alex.
 
-- 
Posted from  [146.133.1.30] 


 
Alex,
Innanzitutto grazie per la replica. Non vorrei appesantire il thread,
ma ritengo doveroso chiarire quello che, per colpa mia, non era chiaro
riguardo alle mie esigenze. (Per esigenze di semplificazione avevo
fatto l'esempio dei nominativi).
Tu hai perfettamente ragione, e del resto mi tocca fare queste
acrobazie proprio perchè il DB è progettato in maniera canonica
(gestione dei campi Nome, Cognome separata).
Cerco di essere sintetico ma chiaro:
Si tratta di un DB Collezione Musicale composta per lo più da brani
che registro in digitale dai canali via satellite di Music Choice
Holland.
Contemporaneamente alla trasmissione, in internet è possibile
visualizzare tutti i dati di quel brano, da EPG che si aggiornano di
volta in volta. E il dato "Artista" viene visualizzato nella forma
Nome Cognome. Il mio problema era velocizzare il più possibile la
seguente attività, in modo da non renderla eccessivamente noiosa: 
seleziona-copia: (es. Albert King)
incolla: in combo box che prende i dati dai campi separati Cognome
Nome ma li restituisce nella forma Nome & Cognome
Su Not inList si apre in automatico la maschera di inserimento
"Artisti"
A quel punto re-incollo nel controllo "Swap" quello che ho ancora
nella Clipboard, e cioè "Albert King" e non perdo più tempo, in quanto
con la routine che mi hai suggerito  tutto si distribuisce in
automatico nei rispettivi controllii Cognome e Nome  e nei campi
sottostanti.
Chiaro a questo punto che la cosa può non essere perfetta al 100% 
(Sting?) (Pink Floyd?) (3 Nomi e 1 Cognome?) ecc..., e... aggiusto sul
momento, ma con 2 e 3 elementi mi va bene nell'90% e oltre dei casi!
La mia richiesta del modo elegante era perchè volevo cogliere
l'occasione per imparare qualcosa di più sul VBA partendo da un caso
pratico.
Ciao e scusami
Pino