Oppure

Loading
17/01/11 15:58
davidebrescia
Ciao non funge, evidenzia sempre la lettera E.
Il concetto dell'autocompletamento funziona in questo modo nel mio gestionale. Il mio gestionale serve per tenere sott'occhio le entrate e uscite mensili (bilancio mensile).
L'utente deve inserire la data operazione, la descrizione del movimento, esempio :
data 17/01/2011
descrizione : CARBURANTE AUTO XXXXX
tipo op: il tipo operazione (C=COSTO R=RICAVO)
voce di riferimento : "Spese Carburante"
importo : 30
e salvare tutto..

quando vado sul campo descrizione che è una combobox, man mano digito un carattere, lui mi propone tra le descrizioni memorizzate in precedenza quella possibile ovvero digitando S...mi mostrerà tutte le descrizioni che iniziano per S digitando per esempio p .(quindi Sp) tutte quelle che iniziano per sp fino a quando trovo quella giusta se non propone nulla significa che la descrizione che stò usando non è mai stata inserita ; questo è l'autocompletamento, quando si preme un tasto lui controlla il tasto premuto e lo ricerca nel campo
descrizioni del database forse è per questo che non cancella il carattere, perchè in realtà lo cancella ma immediatamente in modo rapidissimo esegue
la ricerca della descrizione..ed è come se non lo eseguisse..spero di essermi fatto capire...al limite vedo di riuscire a produrre un video dimostrativo per farti vedere come funge attualmente il meccanismo..
aaa
19/01/11 9:03
poeo85
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim lb_trovato As Boolean
Dim i As Integer

lb_trovato = False
i = 0
If KeyCode = 40 Or KeyCode = 38 Then
Do While i <= Combo1.ListCount - 1 And lb_trovato = False
If InStr(1, UCase(Combo1.List(i)), UCase(Combo1.Text)) > 0 Then
lb_trovato = True
End If
i = i + 1
Loop
If lb_trovato = False Then
Combo1.ListIndex = -1
KeyCode = 0
End If
End If

End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
Dim ls_Stringa As String
Dim lb_trovato As Boolean
Dim i As Integer
If KeyAscii <> 8 Then
ls_Stringa = Combo1.Text & Chr(KeyAscii)
If ls_Stringa <> "" Then
lb_trovato = False
i = 0
Do While i <= Combo1.ListCount - 1 And lb_trovato = False
If InStr(1, UCase(Combo1.List(i)), UCase(ls_Stringa)) > 0 Then
Combo1.ListIndex = i
Combo1.Text = ls_Stringa
KeyAscii = 0
Combo1.SelStart = Len(Combo1.Text)
lb_trovato = True
End If
i = i + 1
Loop
End If
End If
End Sub

Private Sub Form_Load()
Combo1.Text = ""
Combo1.AddItem "Italia"
Combo1.AddItem "Spagna"
Combo1.AddItem "Germania"
Combo1.AddItem "Francia"
Combo1.AddItem "Grecia"
Combo1.AddItem "Irlanda"
Combo1.AddItem "Austria"
Combo1.AddItem "Australia"
End Sub



Davide apri un progetto nuovo e metti nella form un combo
e nel progetto incolla questo...dimmi se funziona come vuoi tu o cosa c'è che non va

metti combo1.sorted =true
premi le iniziali e premi freccia giù...dimmi se ti garba
Ultima modifica effettuata da poeo85 19/01/11 9:37
aaa
24/01/11 13:24
RUDYX
DavideBrescia, ho capito un pò di più , (nel senso che me lo immaginavo come intendevi tu l'AUTOCOMPLETAMENTO, solo che volevo esserne certo), dunque tu vuoi anche che si ripopoli ogni volta il tuo COMBOBOX giusto ???, preso da un database ,.... beh! allora dovremmo anche verede se il dtabase è in Acces o cosa ............
aaa
24/01/11 14:21
poeo85
Private Sub Combo1_KeyPress(KeyAscii As Integer)

Dim ls_Stringa As String
Dim i As Integer
Dim appo As Integer

If KeyAscii <> 8 Then
ls_Stringa = Combo1.Text & Chr(KeyAscii)
Combo1.Clear
If ls_Stringa <> "" Then
i = 1
Do While i <= UBound(arr) And lb_trovato = False
appo = InStr(1, UCase(arr(i)), UCase(ls_Stringa))
If appo = 1 Then
Combo1.AddItem arr(i)
Combo1.Text = ls_Stringa
KeyAscii = 0
Combo1.SelStart = Len(Combo1.Text)
End If
i = i + 1
Loop
End If
End If



End Sub

Private Sub Form_Load()
ReDim arr(1 To 8)
arr(1) = "Italia"
arr(2) = "Spagna"
arr(3) = "Germania"
arr(4) = "Francia"
arr(5) = "Grecia"
arr(6) = "Irlanda"
arr(7) = "Austria"
arr(8) = "Australia"
Combo1.Text = ""
End Sub

prova questo...per poi adattarlo usi una query con il where campo like 'i%'
e invece di ciclare l'array cicli il recordset...

ma se fai la select non ti resta che aggiungere i risultati nella combobox. poi dipende dal tuo caso...


calcola se ti conviene fare ogni volta una query o una prima query e poi ti salvi i dati in un array...se mi son spiegato male fammi sapere

**********************
perdonami

Option Explicit
Dim arr() As String
Private Sub Combo1_KeyPress(KeyAscii As Integer)

Dim ls_Stringa As String
Dim i As Integer
Dim appo As Integer

If KeyAscii <> 8 Then
ls_Stringa = Combo1.Text & Chr(KeyAscii)
Combo1.Clear
If ls_Stringa <> "" Then
i = 1
Do While i <= UBound(arr)
appo = InStr(1, UCase(arr(i)), UCase(ls_Stringa))
If appo = 1 Then
Combo1.AddItem arr(i)
Combo1.Text = ls_Stringa
KeyAscii = 0
Combo1.SelStart = Len(Combo1.Text)
End If
i = i + 1
Loop
End If
End If
End Sub

Private Sub Form_Load()
ReDim arr(1 To 8)
arr(1) = "Italia"
arr(2) = "Spagna"
arr(3) = "Germania"
arr(4) = "Francia"
arr(5) = "Grecia"
arr(6) = "Irlanda"
arr(7) = "Austria"
arr(8) = "Australia"
Combo1.Text = ""
End Sub




Ultima modifica effettuata da poeo85 24/01/11 16:15
aaa