Newsgroup: it.comp.appl.access
Titolo: sempre iniziale maiuscola

Un pò di tempo fà sul NG ho trovato un post che forniva un codice da
inserire nel modulo per aggiornare i primi carattere di una casella di
testo a maiuscole.
Ho provato ad utilizzarlo, ma mi sa che forse sbaglio a richiamarlo perchè
non mi funziona.
Il codice è questo:
'------------------------------------------------------------
' SUB Avviata per adattare la stringa in formato Ucase
'------------------------------------------------------------
Public Function UWord(ByRef testo As String) As String
   Dim a As Long
   'Dopo ogni spazio -solo mette una maiuscola e tutto il resto è minuscolo
   testo = LCase(Trim(testo))
   If Len(testo) = 0 Then Exit Function
   Mid(testo, 1, 1) = UCase(Left(testo, 1))
   a = InStr(1, testo, " ") + 1
   Do Until a < 2
      testo = Left(testo, a - 1) + LTrim(Mid(testo, a - 1))
      Mid(testo, a, 1) = UCase(Mid(testo, a, 1))
      a = InStr(a, testo, " ") + 1
   Loop
   UWord = testo
End Function
Per richiamnarlo :
Private Sub Nome_AfterUpdate()
Call UWord(0)
End Sub
se qualcuno sa dirmi dove sbaglio
Grazie
Sthepan

 ha scritto nel messaggio 
news:1a5r4z18j83ae.1...@40tude.net...

Ciao.
è un pò "incasinata" come funzione: qual'è il tuo obiettivo?
E cmq alla funzione devi passare un parametro di tipo stringa e quindi per 
richiamarla ...
Dim pippo as string
------------------
UWord (pippo)

 ...
Se ti capisco bene sarà piú facile scrivere nel codice del evento
Dopo Aggiornamento della casella:
Me!NomeCasella = StrConv(Me!NomeCasella, vbProperCase)
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 + iscriviti alla prima Conferenza
Italiana per Sviluppatori di Access (CISA 1), Arezzo, 4+5/6/2005 

 ha scritto nel messaggio 
news:3ci3hrF...@individual.net...

Ciao Karl,
ti volevo chiedere fino a quando ci si piò iscrivere alla conferenza di 
arezzo? E' vero che produrrete documentazione (cd etc...) sulla medesima?
Grazie e buona serata 



Ciao
Volevo fare in modo che il testo scritto all'interno della Casella Testo
venga scritto in minuscolo e con il primo carattere maiuscolo.
Potresti spiegarmi una cosa? Pippo sta per il nome della casella di testo?
ciao Sthepan

 ha scritto nel messaggio 
news:gq0mtlfbhzs0$.2uohchb1qe69.dlg@40tude.net...

Ciao,
per raggiungere il tuo obiettivo puoi utilizzare la seguente function in un 
modulo..l'ho resa più semplice possibile...
----------
Public Function ConvertiTesto(parametro As Variant) As String
On Error GoTo GestioneErrore
'Dichiaro le variabili
Dim x, y As Long
Dim primalettera, restodellafrase As String
'Al parametro passato tolgo gli spazi (Trim)  e rimpiazzo (Replace) gli
'eventuali spazi con nessun spazio -> "" cioè tolgo gli spazi
parametro = Replace(Trim(parametro), " ", "")
'calcolo la lunghezza del parametro
x = Len(parametro)
'Se la lunghezza del parametro passato è 0
'quindi vi sono solo eventualmente spazi esco
'dando 1 messaggio all'utente
If x = 0 Then
  MsgBox "Stringa nulla"
  Exit Function
End If
'se il parametro passato è numerico
'lo comunico all'utente ed esco
If IsNumeric(parametro) Then
   MsgBox "Inserire una stringa -> hai inserito un numero"
   Exit Function
End If
'raccolgo la prima lettera di sinistra
primalettera = Left(parametro, 1)
'trasformo la prima lettera in maiuscolo
primalettera = UCase(primalettera)
'considero il resto della frase come parte destra
'del mio parametro meno la prima lettera
restodellafrase = Right(parametro, x - 1)
'trasformo in minuscolo il resto della frase
restodellafrase = LCase(restodellafrase)
'ricompongo il parametro come somma di testi
parametro = primalettera + restodellafrase
'assegno il valore del parametro con la nuova
'formattazione alla mia function
 ConvertiTesto = parametro
Exit Function
GestioneErrore:
     MsgBox "Si è verificato il seguente errore -> " & Err.Description
     Exit Function
End Function
---------------------------------
Per richiamare la function all'interno di una maschera puoi utilizzare la 
seguente sintassi...puoi inserire un pulsante e scrivere il seguente codice 
all'interno dell'evento click
Private Sub pulsante_click()
Dim pippo As String
pippo = "  pip  p  o  "
pluto = 123
MsgBox ConvertiTesto(pippo)
MsgBox ConvertiTesto(pluto)
End Sub
-----------------------------------------------
In questo caso "pippo" sta per una variabile di tipo stringa (dichiarata con 
l'istruzione Dim)  alla quale assegno (fra doppi apici) il valore pippo e 
poi la visualizzo con un MsgBox
----------------------------------------------------
Se il tuo caso è riferito ad un textbox basta prelevarne il nome (vai in 
modalità struttra - click con il sinistro - apre il menu con il destro e 
leggi la proprietà "nome elemento"...lo puoi anche cambiare...e se esso è 
per ipotesi txtTesto basta richiamare la funzione nel seguente modo...magari 
nell'evento dopo aggiornamento della casella di testo
Private Sub txtTesto_AfterUpdate()
 Me.txtTesto.Value = ConvertiTesto(Me.txtTesto.Value)
End Sub
------------------------------------------------------------------
Spero di essere stato chiaro...in ogni caso mi trovi "on line" :-)
Gaspare 

 ha scritto nel messaggio
news:1a5r4z18j83ae.1...@40tude.net...

Guarda che per forzare in maiuscolo solo la prima lettera di ogni parola non
è necessario scrivere una funzione utente: Access mette a disposizione una
funzione intrinseca chiamata StrConv (vedi help).
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------



Ciao,
lo so, normalmente uso questa :
Private Sub Nome_AfterUpdate()
'Converte dopo l'aggiornamento tutti i caratteri in minuscolo
'e solo la prima lettera maiuscola
Me!Nome = StrConv(Me!Nome, vbProperCase)
End Sub
Solamente che avevo letto un post dove era riportato questo codice che
faceva la stessa cosa e volevo provarlo, però non mi funzionava. Ecco il
perchè del mio post.
ciao
Sthepan