PDA

Visualizza la versione completa : [VB] tipo non corrispondente


Rossella_75
29-11-2002, 22:42
Ciao a tutti
sto cercando di capire come funziona questo codice che ho trovato sulla rete, fa in modo che come inizio a scrivere dentro una textbox lui cerca il record corrispondete



If Len(TmpStr) = 1 Then S = TmpStr
Comuni.Find ">=", TmpStr
If Not Comuni.EOF And Not Comuni.BOF Then
If UCase(TmpStr) = UCase(Mid(Comuni!COMU_DESCR, 1, Len(TmpStr))) Then
If Len(TmpStr) > Len(citta.Tag) Then
citta.Text = Comuni!COMU_DESCR
citta.SelStart = Len(TmpStr)
citta.SelLength = Len(citta.Text) - (Len(TmpStr))
provincia.Text = Comuni!COMU_PROV
cap.Text = Comuni!cap
End If
Else


ma quando arriva qui (Comuni.Find ">=", TmpStr)

mi da errore 13 - tipo non corrispondente sapete dirmi che vuol dire??

grazie mille

:ciauz:

Rossella_75
01-12-2002, 18:32
:cry:

r0x
01-12-2002, 19:17
Dubito che senza le dichiarazioni delle variabili o degli oggetti che generano l`errore qualcuno possa sognarsi che razza di errore sia .. :tongue:

Sii precisa.

Ciao.

Rossella_75
01-12-2002, 19:18
io vorrei fare una textbox inteligente (ma non ne sono capace)

quel codice l'ho trovato in rete.

tu ne hai mai fatta una??


:ciauz:

r0x
01-12-2002, 19:21
1) Cosa intendi per "intelligente"?

2) Non potrai mai sperare di compilare quel codice cosi` come sta.

Rossella_75
01-12-2002, 19:25
intendo una textbox dove ad esempio l'utente digita la prima lettera e lui cerca in un database il primo record corrispondente e cosi via,
in pratica ti aiuta a scrivere, hai mai visto programma che calcola il codice fiscale, li funziona cosi, e da li che ho preso il codice

:ciauz:

chipdb
01-12-2002, 20:03
C' un codice molto pi semplice che utilizza un'API.
Questa la dichiarazione:


Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Public Const LB_FINDSTRING = &H18F

e questo il codice che devi mettere all'evento Change della Textbox:

ListName.ListIndex = SendMessage(ListName.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))

Dove ListName il nome di un'ipotetica lista che contiene tutti i record e text1 la textbox che contiene il testo ricercato.

Ciao :ciauz:

Rossella_75
02-12-2002, 10:01
ho fatto come hai detto ma ho ricevuto un 'errore



Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Public Const LB_FINDSTRING = &H18F

Private Sub Form_Load()

Data.rscomuni.Open
While Not Data.rscomuni.EOF
List1.AddItem (Data.rscomuni.Fields("COMU_DESCR"))
Data.rscomuni.MoveNext
Wend
Data.rscomuni.Close

End Sub

Private Sub Text1_Change()
List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
End Sub



in List1 ottengo senza problemi la lista che mi interessa ma l'errore nella dichiarazione dell'API esattamente qui



Public Const LB_FINDSTRING = &H18F


guarda
qui (http://www.actionlab.it/file%20comuni/vberrore.htm)

:dh:

laccamen
02-12-2002, 10:17
Originariamente inviato da Rossella_75
ho fatto come hai detto ma ho ricevuto un 'errore



Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Public Const LB_FINDSTRING = &H18F

Private Sub Form_Load()

Data.rscomuni.Open
While Not Data.rscomuni.EOF
List1.AddItem (Data.rscomuni.Fields("COMU_DESCR"))
Data.rscomuni.MoveNext
Wend
Data.rscomuni.Close

End Sub

Private Sub Text1_Change()
List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
End Sub



in List1 ottengo senza problemi la lista che mi interessa ma l'errore nella dichiarazione dell'API esattamente qui



Public Const LB_FINDSTRING = &H18F


guarda
qui (http://www.actionlab.it/file%20comuni/vberrore.htm)

:dh:


metti la costante su di un modulo standard.

Rossella_75
02-12-2002, 10:25
Ok adesso funziona, ma io volevo fare in modo che quando l'utente scrive nella textbox il risultato viene scritto non nella list1 ma nella textbox..

possibile???

:ciauz: e grazie

Loading