Il linguaggio Visual Basic di Microsoft
 

VB6 listview ricerca su due campi

gaetano cala 5 Ago 2016 21:33
buongiorno sono un novello programmatore mi presento al gruppo
.
sto sperimentando la listview,esaminamdo il programma sui db di Carbone carlo.
in questo programma vi e' la ricerca di un campo(cognome) e quindi la
evidenziazione di un record di un db.mdb su di una listview ecco il codice:
Private Sub Command1_Click(Index As Integer)
Select Case Index

Case 1

Unload Me

Case 0

If Len(Text1) = 0 Then

MsgBox "Specificare un cognome valido.", vbCritical, "Errore"
Exit Sub
Else
Dim sFound
With frmGESTDB
Set sFound = .lstADD.FindItem(Text1, , , lvwPartial)
If sFound Is Nothing Then
MsgBox "Non è stata trovata alcuna voce come (" & Text1 & ")", vbCritical,
"Errore"
Exit Sub
Else
sFound.EnsureVisible
sFound.Selected = True
Unload Me
.lstADD.SetFocus
End If
End With
End If
End Select

End Sub

Volendo invece fare la ricerca con due campi (cognome e nome) come deve essere
trasformato il listato
Luca D 6 Ago 2016 09:06
On Friday, August 5, 2016 at 9:33:06 PM UTC+2, gaetano cala wrote:
> buongiorno sono un novello programmatore mi presento al gruppo
> .
> sto sperimentando la listview,esaminamdo il programma sui db di Carbone carlo.
> in questo programma vi e' la ricerca di un campo(cognome) e quindi la
evidenziazione di un record di un db.mdb su di una listview
[CUT]
> Volendo invece fare la ricerca con due campi (cognome e nome) come deve essere
trasformato il listato

Supponendo che Cognome e Nome tu li abbia in due colonne separate del ListView,
e supponendo che "ricerca con due campi" tu intenda che vuoi cercare la
combinazione dei due (ovvero scrivi in un unico textbox "gaetano cala" e vuoi
l'elemento corrispondente) e non la ricerca separata nei due campi, allora il
metodo .FindItem non ti aiuta, e devi sostituirlo con un ciclo di confronto
fatto a mano.

Quindi:

- Ciclo FOR sulla collection lstADD.ListItems
- Confronta la concatenazione dei valori nella colonna 'Cognome' e 'Nome' con la
stringa desiderata
- Se trovi corrispondenza, assegna sFound all'oggetto .ListItems(<indice
attuale>) e da lì procedi come da tuo codice.

Visto che parli di DB, nota che in caso di tabelle particolarmente grandi,
questo tipo di ricerca fatta direttamente nei controlli dell'interfaccia utente
potrebbe non essere particolarmente efficente, e la soluzione migliore è quella
di far fare l'operazione al motore di database via query e poi usare il
risultato per sincronizare la UI
gaetano cala 6 Ago 2016 12:52
Grazie Luca,non ho specificato bene ma intendevo quello che hai capito.Provero
al tua soluzione.grazie

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio Visual Basic di Microsoft | Tutti i gruppi | it.comp.lang.visual-basic | Notizie e discussioni visual basic | Visual basic Mobile | Servizio di consultazione news.