Emanuele Lana

Skip to content
  • Chi sono
  • Formazione
  • Consulenza
  • Contatti
  • Corsi

Casella di riepilogo con filtro multiplo in Access

23/11/2014 Microsoft Access Video tutorial

Dopo aver creato la struttura del database, le maschere e le query principali, dobbiamo lavorare sull’interfaccia, sul front-end. Se l’utente non è facilitato nell’utilizzo del nostro database, forse tra sé dirà: “Meglio Excel…”. Sta a noi sviluppatori arricchire l’interfaccia per rendere Access uno strumento indispensabile ed efficace al fine di memorizzare dati e poi interrogarli.

Abbiamo visto  come usare caselle combinate per filtrare i record di una maschera. E’ ora di imparare come filtrare i record utilizzando una casella di riepilogo. Con questo controllo, infatti, è possibile selezionare più valori. Basta impostare una proprietà (Altro-Selezione Multipla-Semplice). Il difficile, però, sta nello scrivere il codice che mi consente di leggere gli elementi che l’utente ha selezionato e poi utilizzarli per applicare il filtro alla maschera.

Casella riepilogo multipla

Ingredienti

1) una maschera che abbia tra i campi dell’origine record il campo IDCategoria
2) una casella di riepilogo che abbia come origine riga una query che visualizza IDCategoria e NomeCategoria
3) la casella di riepilogo impostata per consentire la selezione multipla “Semplice”
4) la casella di riepilogo impostato con Numero Colonne: 2 e Larghezza Colonne: 0cm (così la prima sarà nascosta, IDCategoria, la seconda visibile, NomeCategoria)
5) un pulsante di comando che esegue il codice VBA

Procedimento

Clic con il tasto destro sul pulsante di comando, scegliamo “Genera evento” e poi “Routine Evento”. Saremo condotti nell’ambiente VBA. Vogliamo che Access esegua il nostro codice quando si verifica l’evento di default del pulsante di comando (che naturalmente è il clic dell’utente sul pulsante)

Private Sub cmdFiltro_Click()
End Sub

Ora, dopo la riga Private e prima di End Sub scriviamo il nostro codice:

Dim strSQL As String
Dim varItm As Variant

Creo due variabili. La prima conterrà il filtro da applicare alla maschera. La seconda serve per effettuare un ciclo negli elementi della casella di riepilogo

If lstCategorie.ItemsSelected.Count = 0 Then
   MsgBox "Selezionare almeno una categoria.", vbInformation
   Exit Sub
End If

Controllo se è selezionato almeno un elemento, altrimenti è inutile eseguire il codice successivo. Count è una proprietà della collezione ItemsSelected, che contiene gli elementi selezionati nella casella di riepilogo. Se il conteggio è 0, significa che l’utente non ha selezionato nulla. In tal caso, lo avviso e poi esco. Potrei anche rimuovere l’eventuale filtro esistente scrivendo prima di Exit Sub, su una riga a sé, Me.FilterOn=False. Così il pulsante Filtra se ci sono elementi selezionati, applica il filtro. Se non esistono elementi selezionati, lo rimuove. Non servirebbe nemmeno il pulsante Rimuovi filtro.

For Each varItem In lstCategorie.ItemsSelected
  If lstCategorie.Selected(varItem) = True Then
    strSQL = strSQL & lstCategorie.ItemData(varItem) & ","
  End If
Next

Per ogni elemento (varItem) nella collezione degli elementi selezionati eseguo un test: se l’elemento è selezionato, aggiungo il suo valore alla stringa SQL con il filtro.

strSQL = Left(strSQL, Len(strSQL) - 1)

Ora tolgo la virgola finale. Infatti, il mio codice concatena il valore selezionato e una virgola. Se fossero selezionate due categorie, la variabile conterrebbe: “6,7,”. La virgola finale causerebbe un errore di run-time. Perciò devo eliminarla. Prendo da sinistra tanti caratteri quanti sono la lunghezza della mia variabile meno 1 (la virgola finale, appunto).

Me.Filter = "IDCategoria IN(" & strSQL & ")"

La proprietà Filter della maschera imposta il filtro, ma NON lo applica. Il filtro utilizza l’operatore SQL di appartenenza IN. Come dire: filtra tutti i record il cui IDCategoria appartiene all’elenco che passo in strSQL (nel nostro esempio 6 e 7).

Me.FilterOn = True

Last, rendo attivo il filtro. (E dunque impostandolo a False lo posso disattivare).

Ok, direi che il messaggio finale del mio post è… impara il linguaggio VBA! Enjoy it

casella di riepilogociclofiltro multiploFor Each -nexrtutorialVBA

Argomenti correlati

Calendar Year e Fiscal Year in Microsoft Access

Gestire Calendar Year e Fiscal Year in Microsoft Access è un’operazione molto semplice. E’ sufficiente una tabella di appoggio in cui specificare pochi dati per indicare a quale mese fiscale corrisponde il mese di calendario.

Visualizzare (Tutto) in una casella combinata in Access

Come creare una casella combinata in Microsoft Access è un argomento che ho trattato in diversi video sul mio canale di formazione di youtube. Abbiamo anche imparato a creare una casella combinata a cascata. Un altro video insegna come usare le query di unione. Ecco, sono proprio le query di unione che risolvono il problema di […]

Trasformare il testo in maiuscolo con maschera di input in Microsoft Access

Possiamo sfruttare la proprietà maschera di input (in inglese Input Mask) per trasformare in maiuscolo il testo digitato. In un database la qualità del dato in fase di immissione è fondamentale: se riusciamo a controllare che cosa scrive l’utente, le nostre query, i nostri report, le nostre stampe unione avranno dati puliti e otterremo ottimi […]

Nel 1994 è iniziato il mio percorso di consulenza e formazione in ambito IT. La gestione del dato è al centro dei miei interessi.
Nel mio lavoro di consulenza assisto il cliente nella progettazione del modello logico dei dati e implemento le soluzioni di interfaccia.

Tag

best practice casella combinata casella di testo Cerca.Vert ciclo controllo corso di formazione dopo aggiornamento Evento Excel funzione funzioni giorno.settimana macro Microsoft Access MsgBox Outlook pivot Powerpivot progettazione query raggruppamento SE SQL su clic testo in colonne trimestre tutorial unione VBA

Articoli recenti

  • Caratteri disponibili nella casella di testo in Microsoft Access 11/03/2024
  • Come controllare l’inserimento dati 2 di 2 24/09/2023
  • Come controllare l’inserimento dati 1 di 2 10/09/2023
  • Come controllare l’inserimento dati 27/08/2023

Info

  • Chi sono
  • Formazione
  • Consulenza
  • Contatti
  • Corsi

Categorie Blog

  • Comunicazione (5)
  • Microsoft Access (51)
  • Microsoft Excel (25)
  • Video tutorial (47)

Cerca

Teniamoci in contatto

Cookie policy | illustrazioni di Elisa Patrissi, realizzato da Brixel