Newsgroup: it.comp.appl.access
Titolo: Controllare i primi due caratteri digitati in un textBox

Salve,
 
in una casella di testo vorrei fare un controllo sui primi due caratteri digitati.
 
se  uguale a MO 
 
la casella di testo diventa MONTANARI
 
se uguale a MA 
 
la casella di testo diventa MASCALZONI
 
eccetera
 
ho provato con l'evento change... ma non riesco. Cmq è quella strada?
 
grazie

Salve,
 
Vito Fanciullo ha scritto:

Perché non usi una casella combinata con la proprietà "Espansione 
automatica" a Sì? Così potresti prendere i valori da una tabella o un 
elenco valori invece di scrivere tutto nel codice.
 
Con u po' di codice è anche possibile di lasciare iniziare l'espansione 
solo dopo la seconda (o un qualsiasi numero) di caratteri:
http://www.allenbrowne.com/ser-32.html
 
 
Se assolutamente dev'essere un casella di testo incolla qui il codice 
che hai provato con l'evente change.
 
-- 
Ciao
Karl
*********
http://www.AccessDevCon.com
 
Access FAQ: 
http://www.donkarl.com/it
 


Ciao Karl (sono felice che ci sei ancora)
 
mah ho risolto così:
 
Private Sub Ricerca_Change()
 
   Dim strR As String
   strR = Me.ricerca.Text
 
   Me!ricerca = strR
   Me!ricerca.SetFocus
   If Me!ricerca = "ma" Then
   Me!ricerca = "mascalzoni"
   End If
   If Me!ricerca = "mo" Then
     Me!ricerca = "montanari"
     End If
 
   Me!ricerca.SelStart = 255 'Len(Me!Ricerca.Text)
 
ho pensato a questa soluzione perché in realtà in un campo devo scrivere molte
volte o montanari o mascalzoni
allora con questo codice mi basta digitare mo o ma e il codice me lo cambia rispettivamente in montanari o mascalzoni.
sicuramente ci sono diversi altri modi............
ciao 
Vito


quello che non capisco è cosa fa selStart = 255


Niente non va bene, su quella textBox ho anche un evento afterUpdate e, a quanto pare, l'evento change mi annulla l'evento afterUpdate. Boh

 
 
Impostare il valore alla proprietà Value (come nel tuo codice) non 
provoca l'evento AfterUpdate. Invece potresti impostarlo con la 
proprietà Text, p.e. con (solo) questo codice nell'evento Change:
 
Select Case Me!ricerca.Text
     Case "ma"
         Me!ricerca.Text = "mascalzoni"
     Case "mo"
         Me!ricerca.Text = "montanari"
End Select
 
Me!ricerca.SelStart = 255
 
Se funziona bene dipende anche un po' di cosa fai nell'AfterUpdate, 
perché il cursore rimane nella casella.



Ciao Karl,
incredibile il codice funziona, e fa una cosa che per me è incomprensibile
ad ogni carattere che digito non solo parte l'evento change ma anche l'evento
afterUpdate! ad ogni carattere digitato!
 
ecco il codice afterUpdate:
commento cosa fa
io digito Montanari3AC (dopo aver digitato mo il codice tuo mi trasforma
in montanari)
poi aggiungo 3AC
 
quando ho finito di digitare nel campo me.ricerca ho:
 
campo IdClasse = montanari3AC2018/19
campo nomeProf = montanari
campo nomeClasse = 3AC
 
questi campi vengono popolati mano mano che digito in me.ricerca!
 
private Sub ricerca_AfterUpdate()
Me.IdClasse = Me.ricerca+ Me.AnnoScol
 
Dim Pos As Integer, i As Integer, Lung As Integer, trovaPosNumero As Integer
 
   'verifico la lunghezza del campo ricerca
   Lung = Len(Me.ricerca)
    ' inizio un ciclo da 1 alla lunghezza del campo ricerca
   For i = 1 To Lung
      Pos = i ' il valore della posizione di partenza (il primo carattere della stringa)
      'Verifico se il carattere è un numero
      If IsNumeric(Mid(Me.ricerca, i, 1)) Then
         'è un numero...allora
       trovaPosNumero = InStr(Me.ricerca, Mid(Me.ricerca, i, 1))
 
       Me.nomeProf = Left(Me.ricerca, trovaPosNumero - 1)
 
       Me.NomeClasse = Mid(Me.ricerca, trovaPosNumero)
 
          End If
 
       Next i
End Sub