Filtro in casella combinata

di il
2 risposte

Filtro in casella combinata

Buongiorno a tutti, ho bisogno di chiedere un aiuto per un operazione su una casella combinata.
Come forse qualcuno già sa non sono molto esperto di VBA, infatti dopo diversi tentati sono riuscito a mettere giù due righe di codice che mi consentono di fare una sorta di filtro in una casella combinata.
Private Function filter_by_letter()
Dim s, str As String
        s = ActiveControl.Caption
        str = "select [id],[qualifica],[cognome],[nome] from [q_elenco_generale] WHERE [cognome] like '" & s & "*'"
        ListGeneral.RowSource = str
        ListGeneral.Requery
        ListGeneral.SetFocus

End Function
In pratica io ho in una maschera una casella combinata denominata ListGeneral dove l'origine dei dati è una query denominata q_elenco_generale. Questa funzione viene richiamata da dei 21 button che vanno dalla A alla Z e che quindi mi permettono di filtrare l'elenco valori della casella combinata in base alla Caption del button premuto. Cioè se faccio click sul button A, la casella combinata mi visualizza solo i cognomi che iniziano per A. Se se faccio click sul button B, la casella combinata mi visualizza solo i cognomi che iniziano per B e cosi via....fino alla Z.

Adesso il mio problema è che ho creato un altro button denominato TUTTI dove al suo click vorrei che la casella combinata visualizzasse tutto l'elenco valori ripartendo dal primo cognome che inizia con la lettera A.
Ho fatto diversi tentativi, sia inserendo qualche rigo di codice in questa funzione, sia creando una sub nuova all'evento click del button TUTTI, ma senza riuscirci.
Sarei grato se qualcuno mi desso una mano per risolvere questo mio problema.
Grazie.

2 Risposte

  • Re: Filtro in casella combinata

    Guarda questo mi ovecchio esempio, è fatto con A97 mi pare ma funziona anche con versioni ultime, al massimo genera un Warning per la versione.


    Detto questo, nel tuo codice non serve il REQUERY.
    Attenzione a come dichiari le Variabili, la [s] così come hai fatto è VARIANT, correggi e magari ottimizza così:

    Se vuoi TUTTI, elimina dalla stringa SQL la condizione WHERE... tanto è un Button a parte...
    
    Private Function filter_by_letter()
            Dim str As String
            str = ActiveControl.Caption
            str = "select [id],[qualifica],[cognome],[nome] from [q_elenco_generale] WHERE [cognome] like '" & str & "*'"
            ListGeneral.RowSource = str
            ListGeneral.SetFocus
    End Function
    
    Private Function Tutti()
            str = "select [id],[qualifica],[cognome],[nome] from [q_elenco_generale]"
            ListGeneral.RowSource = str
            ListGeneral.SetFocus
    End Function
  • Re: Filtro in casella combinata

    Grazie mille, funziona perfettamente. Grazie soprattutto per la rapidità della tua risposta nonché le spiegazioni che mi hai dato.
Devi accedere o registrarti per scrivere nel forum
2 risposte