Visualizzazione su listbox

di il
7 risposte

Visualizzazione su listbox

Buonasera a tutti,
Vorrei un vostro aiuto a risolvere un problema:
Ho 2 listbox, che reperiscono i dati da un tabella Dati di un file mdb.
Nella prima listbox vengono visualizzati i cognomi e nella seconda dei nomi. Vorrei che ogni volta che seleziono un cognome della listbox_1 mi comparisse nella listbox_2 solo una volta il nome corrispondente a quel cognome.
Mi spiego meglio: se ad es. seleziono dalla listbox_1 il cognome (Rossi) e nel mio database database abbiamo 5 Rossi Mario, vorrei che nella listbox_2 mi compaia solo 1 volta in nome Mario. Come ho scritto il codice mi compaiono 5 volte Mario.
Public Function seleziona_nomi()
Set rs = DB.OpenRecordset("Select * from Dati where cognomi = " & Apici(Trim(lst_cognomi.List(lst_cognomi.ListIndex))))
lst_nomi.Clear
rs.MoveFirst
Do While Not rs.EOF
lst_nomi.AddItem rs("nome")
rs.MoveNext
Loop
End If

7 Risposte

  • Re: Visualizzazione su listbox

    Purtroppo non posso provare, vedi se puoi inserire nella Select il comando Distinct (ma andrebbe ad agire sui cognomi).
    Altrimenti puoi scrivere una routine che rimuove i duplicati da lst_nomi o meglio aggiungi il nome solo se non è già presente.
  • Re: Visualizzazione su listbox

    Grazie Rubik, ho provato ma nulla...
  • Re: Visualizzazione su listbox

    Salve,
    prima di caricare il nuovo elemento, dovresti prima veriricare che questo non sia gia' presente nella listbox...
    listbox in VB6 non ha purtroppo una funzionalita' di ricerca "interna" al fine di valutare la presenza di una stringa...
    dovresti quindi "manualmente ciclare" per ogni elemento gia' caricato per riscontrarne la presenza prima dell'inserimento... meglio ancora, usare una API di Window che velocizza l'operazione, vedi entrambi gli esempi presso https://stackoverflow.com/questions/9265623/searching-a-listbox-for-a-specified-string-vb6

    salutoni romagnoli
    --
    Andrea
  • Re: Visualizzazione su listbox

    Non entro nel merito del tuo codice, perché sono al cellulare, scrivo senza provare:
    Public Function seleziona_nomi()
        Set rs = DB.OpenRecordset("Select * from Dati where cognomi = " & Apici(Trim(lst_cognomi.List(lst_cognomi.ListIndex))))
        lst_nomi.Clear
        rs.MoveFirst
        Dim Esiste As Boolean
        Do While Not rs.EOF
            Esiste = False
            For i = 0 To lst_nomi.ListCount
                If UCase(rs("nome")) = UCase(lst_nomi.List(i)) Then
                    Esiste = True
                    Exit For
                End If
            Next
            If Esiste = False Then lst_nomi.AddItem (rs("nome"))
            rs.MoveNext
        Loop
    End Function 
  • Re: Visualizzazione su listbox

    Grazie Rubik per l'aiuto, il codice mi trova soltanto il primo nome associato al cognome, cioè:
    se ad esempio ho Rossi Mario, Rossi Paolo, Rossi Piero, etc.... nella listbox nomi mi si visualizza solo Mario.
  • Re: Visualizzazione su listbox

    Per verificare basta che metti un breakpoint, su Do While Not rs.EOF, mandi in esecuzione e poi con F8 avanzi riga riga per vedere cosa succede e controlli il contenuto delle variabili.
    Il vecchio codice li scriveva tutti i nomi? anche se duplicati?
  • Re: Visualizzazione su listbox

    Scusa Rubik, ho commesso io un errore nello scrivere... il tuo codice va benissimo, grazie dinuovo e buona serata.
Devi accedere o registrarti per scrivere nel forum
7 risposte