Newsgroup: it.comp.appl.access
Titolo: Maiuscolo automatico e manuale contemporaneamente

Ciao a tutti vorrei gentilmente in un campo "testo" la prima lettera
di una frase sempre maiuscola,mentre le rimanenti minuscole.Ovviamente
se le rimanenti vengono scritte in maiuscolo devono rimanere tali:
Esempio1:
Rossi enrico (enrico se' e' minusc deve rimanere tale)
Esempio2:
Rossi Enrico (Enrico se' e' maiusc deve rimanere tale).
Il codice che ho a disposizione (postatomi gentilmente sul nostro NG)
o mi da le iniziali tutte maiscole o solo la prima maiuscola.
TuoCampo = Format(Mid(TuoCampo, 1, 1), ">") & Format(Mid(TuoCampo,
2, Len(TuoCampo) - 1), "<")
Private Sub tuoCampo_AfterUpdate()
tuoCampo = StrConv(TuoCampo, vbProperCase)
End Sub
Se io ad esempio dovessi scrivere "Azienda tessile di Rossi Enrico"
come potrei gestirla con questo codice???
Grazie Dino

 Grazie Dino
-- 
Ciao
Geppo 

 inserisci in un modulo questa funzione:
 function StrconvMod(vTesto as string) as string
 dim i as integer
 'converto la prima lettera in maiuscolo
StrconvMod = strconv(vTesto, vbpropercase)
 'ciclo il testo lettera per lettera saltando la prima
 'rimettendo le maiuscole al loro posto se presenti
for i = 2 to len(vTesto)
     mid(StrconvMod, i,1) = mid(vTesto,i,1)
next i
 end function
e la richiami come ti ho indicato.
-- 
Ciao
Geppo 


ciao e grazie per la risposta.domani mattina provo e poi ti faccio
sapere(vrifica per cortesia la mia risposta domani in matt.)
grazie ancora Dino

 grazie ancora Dino
-- 
Ciao
Geppo 


Ciao Dino, se vuoi solo la prima lettera maiuscola di ogni frase, Dopo
aggiornamento o Su uscita, puoi usare il seguente codice:
Dim x As String
x = Mid(MiaTextBox, 2)
MiaTextBox = Mid(StrConv(MiaTextBox, vbProperCase), 1, 1) & x
Naturalmente al posto di "MiaTextBox" metterai il vero nome della tua
casella di testo.
Ciao Vladimiro.

 - Mostra testo citato -
Ciao e grazie a tutti per le risposte.Allora andiamo in
ordine.Partiamo con le soluzioni di geppo.
con la prima soluzione quella del modulo mi da errore. Mi dice che
nella sub non e' previsto un modulo.
il l'ho richiamata come mi avevi detto.
La seconda soluzione invece va bene al 90%,cioe' se scrico tutto
minuscolo mi riporta la rima lettera della prima parola in
maiuscolo.Se scrivo maiuscolo tutte le iniziali delle altre parole le
lascia maiuscole.L'unico problema si riscontra con il "tutto
maiuscolo".Se per esempio l'utente scrive tutto maiuscolo invece di
riportare tutto in minuscolo (tranne la prima lettera della prima
parola) rimane tutto il maiuscolo.
Di seguito ti riporto la riga di codiceche ho voluto variare con il
format ma non funziona.mi riporta tutto in minuscolo.
Cliente = UCase(Mid(Cliente, 1, 1)) + Mid(Cliente, 2, Format(Len
(Cliente), "<"))
Ormai ci siamo basta un non nulla.
Adesso rispondo a Vladimiro.Nell'inserire il tuo codice mi si cancella
tutta la riga che ho inserito,tranne la prima lettera.
Grazie ancora aspetto voste notizie
Dino

 - Mostra testo citato -
Ciao Vladimiro.


Vladimiro hai proprio ragione (sara' la vecchiaia) avevo copiato
male.Pero' rimane sempre un problema:
Se scrivo tuttto in maiuscolo mi rimane tale.Bisognerebbe invece che
riportasse tutto in minuscolo tranne la
prima lettera della prima parola.Faccio un esempio banale:
"GIOVANNI DE REGINA" dovrebbe diventare "Giovanni de regina" (se poi
voglio la d e la g maiuscola la vado a scrivere).
Ciao e grazie ancora
Dino


Dim x As String
' scrivi tutta la frase IN MINUSCOLO eliminando solo la prima lettera
x = Lcase( Mid(MiaTextBox, 2))
'scrivi solo la prima lettera della frase cancellando il resto + x
(tutto tranne la prima)
MiaTextBox = Mid(StrConv(MiaTextBox, vbProperCase), 1, 1) & x
Ciao Vladimiro.


Vladimiro forse non mi spiego bene.Il codice funziona
benissimo.Supponiamo pero' che l'utente abbia sbadatamente pigiato il
maiuscolo permanente (lucchetto) il testo scritto rimane in
maiuscolo,io voglio(sempre se e' possibile) che ritorni in automatico
in minuscolo tranne la prima lettera della prima parola.
Grazie ancora
Dino


Probabilmente sei un pò sbadato :-)
L'ultima routine che ti ho scritto fa esattamente quello che chiedi:
tramite una variabile "x" memorizzo la frase scritta nella casella di
testo, siccome ho bisogno di eliminare la prima lettera dalla frase e
trasformare in carattere minuscolo il resto, uso due funzioni
"Mid"( per eliminare) e LCase (per trasformare in minuscolo):
x = Lcase( Mid(MiaTextBox, 2))
poi ho bisogno che la prima lettera della frase presente nella casella
di testo resti o diventi maiuscola e che il resto venga cancellato,
uso tre funzioni "Mid" ( per eliminare) "StrConv" e
"vbProperCase" (per trasformare la prima lettera di ogni parola in
maiuscolo):
MiaTextBox = Mid(StrConv(MiaTextBox, vbProperCase), 1, 1)
infine unisco quello che resta della frase scritta nella casella di
testo (prima lettera in maiuscolo) più il contenuto della variabile x
(intera frase in minuscolo decurtata della prima lettera):



Vladimiro sei molto gentile a darmi solo dello "sbadato".In realta'
ero di corsa e le ho dato un'occhiata veloce.
Adesso con un po' piu' di calma le cose vanno molto piu' bene.Se
scrivo tutto maiuscolo mi riporta tutto a minuscolo tranne la prima
lettera della prima parola.Pero' se adesso ad esempio scrivo:
"azienda Rossi Mario" lui la reimposta in "azienda rossi mario" in
realta' l'altra mia esigenza e' proprio questa.Se il codice trova al
tre parole con  la prima  la lettera maiuscola le deve lasciare.
Spero di essere stato preciso quanto l'ho sei stato tu.Scusa ancora
per la mia disattenzione e grazie ancora
Dino

 - Mostra testo citato -
Ci vorrebbe la palla di vetro :-)
Non saprei come aiutarti, mi dispiace.
Ciao Vladimiro.


Grazie Vladi,mi ha icomunque aiutato moltissimo!!!!(alla prossima)
Dino

 Grazie Vladi,mi ha icomunque aiutato moltissimo!!!!(alla prossima)
Questa dovrebbe risolvere il tuo problema
Function handleString(vText as string) as string
Dim aStr as variant, aEl as variant, sRes
aStr = split(vText," ")
for each aEl in aStr
	sRes = sres & left(ael,1) & lcase(mid(aEl,2)) &  " "
next
handleString = sRes
end function
la richiami con: myStr = handleString(textbox.value)
--
ac

Alessandro Cara ha scritto:

PS: per evitare possibili errori con parole di un solo carattere
questa:
   sRes = sres & left(ael,1) & lcase(mid(aEl ,2)) &  " "
diventa:
   sRes = sres & left(ael,1) & lcase(mid(aEl & " ",2))
-
ac

 - Mostra testo citato -
Alessandro ciao e grazie per la rispsota e per la disponibilita'.
Mi sembra di aver capito che qyuesta funzione la debba inserire in un
modulo,vero?
Nella funzione .'argomento (vtext....) va sostiuito con il nome del
mio campo???
e così anche quando la richiamo???
Grazie ancora e scusa per eventuali domande banali
Dino

 - Mostra testo citato -
Ale ciao.Ho provato sia inserendola in un modulo che come funzione
normale,ma ...nel primo caso mi da errore mentre nel secondo
non funziona.Sicuramente sbagliero' io.
NB: La funzione io la richiamo nell'evento del campo "dopo
aggiornamento" in questo modo :
myStr = handleString(textbox.value) al posto di (textbox.value) ho
inserito (Cliente.value) cioe' il nome del campo
Grazie ancora
Dino

 inserito (Cliente.value) cioe' il nome del campo
L'ho scritta senza testarla e quindi e' possibile che ci sia qualche errore.
Che tipo di errore ti da ed eventualmente dove?
--
ac

 - Mostra testo citato -
Ciao e grazie per la risposta.Se la provo all'interno del form e la
richiamo nell'evento dopo aggiornamento del campo(inserita così myStr
= handleString(Cliente.Value))
 non succede niente come se non avessi inserito nulla.
Tu come hai risolto questa esigenza nei tuoi DB???
Grazie Dino

  non succede niente come se non avessi inserito nulla.
E come lo verifichi? cosa c'e' dentro myStr?
Data questa stringa:
L'Importanza DI cHIAMARSI ERNESTO
dovrebbe tornare
L'importanza Di chiamarsi Ernesto
Se avessi il tuo problema lo risolverei esattamente come ti ho suggerito
--
ac

 - Mostra testo citato -
Un saluto ad Alessandro.
Ciao Vladimiro.

Spero di essere stato preciso quanto l'ho sei stato tu.
Forse Dino non riesce a spiegarsi bene o io non riesco a capirlo.
Per�, credo che abbia bisogno di codice che interpreti il pensiero 
dell'utente e si adegui di conseguenza.
-- 
Ciao
Geppo

 
Confermo! tutto il post non lo ho letto.
Probabilmente, pero', ha bisogno solo di un piccolo bottone aggiuntivo 
(due per farla complicata) che ripristina il valore digitato se la 
*correzione* non e' voluta.
Naturalmente il primo carattere maiuscolo va forzato e tenuto conto 
della regola del *tutto* maiuscolo (eventuale secondo pulsante, con 
eventuale messaggio). Per quato mi riguarda io aggiungerei la regola che 
se la una *parola* e' maiuscola andrebbe lasciata cosi'
Tutto cio' probabilmente non e' soddisfacente nella totalita' dei casi, 
quale applicazione lo e' mai?, ma sufficientemente adeguata alla richiesta.
--
ac

 - Mostra testo citato -
Ciao e grazie per la risposta.Mi e' venuta un'idea che ti sottopongo
per risolvere il problema.
Mi potrebbe andare bene del codice che forzi solo la prima maiuscola
della prima parola e che lasci le altre parole con le iniziali
minuscole o maiuscole a seconda
di come le scrive l'utente.
il codice che fa questo sull'evento dopo aggiornamento del campo in
questione e' il seguente:
Private Sub Cliente_AfterUpdate()
Cliente = Format(Mid(Cliente, 1, 1), ">") & Mid(Cliente, 2, Len
(Cliente) - 1)
end sub
Se poi l'utente sbadatamente dovesse abilitare il "lucchetto" io
imposterei un avviso che le impedisce di scrivere maiuscolo...e il
gioco e' fatto.
Il mio problema e' impostare il codice corretto.Di seguito ti riporto
il lavoro completo come lo vorrei ma come non funziona (parlo
dell'istruzione If).Chiedo quidi
a te di sistemarmelo (sempre gentilmente).
Private Sub Cliente_AfterUpdate()
If Me.Cliente = Format(Cliente, ">") Then
MsgBox "IMPOSSIBILE SCRIVERE TUTTO IN MAIUSCOLO.DISABILITARE IL TASTO
LUCCHETTO O NON PIGIARE LO SHIFT"
Cancel = True
Me.Undo
Cancel = True
End If
Cliente = Format(Mid(Cliente, 1, 1), ">") & Mid(Cliente, 2, Len
(Cliente) - 1)
end sub
Grazie

 - Mostra testo citato -
Ciao a tutti e grazie ho risolto con Vladimiro (vedete post
sull'attivazione dello shift e caps lock)
Grazie ancora Dino