12/04/2024 - aurecop51 ha scritto:
Ho problema nell'eliminare tutti i filtri nel senso che sto usando un comando con:
Private Sub EliminaFiltro_Click()
CercaNome = ""
CercaCitta = ""
Me.Filter = ""
Me.FilterOn = False
ma mi sta creando problemi.
Ciao,
prima di tutto nel Pulsante EliminaFiltro_Click() elimina ciò che hai scritto e scrivi il tutto in una sub separata
Questa Sub la richiami alla pressione del pulsante EliminaFiltro e in FormLoad
Esempio:
' FORM LOAD
Private Sub Form_Load()
' reset Filter
ResettaFiltro
End Sub
' BUTTON RESET FILTER
Private Sub EliminaFiltro_Click()
' reset filter
MyResetFilter
End Sub
' RESET FILTER
Private Sub MyResetFilter()
' reset filter
Me.Filter = ""
Me.FilterOn = False
' reset combobox
Me.CercaCitta = ""
Me.CercaNome = ""
End Sub
Ma a tutto c'è un perchè, una spiegazione.
Se vai in in designer nella struttura della form vedrai in Filter qualcosa di impostato… Questo qualcosa è proprio ciò che ti filtra quando riapri la Form.
Questo accade in quanto viene memorizzato nella form l'ultimo filtro impostato… ho elimini queste impostazioni in fase di Close della Form oppure lo resetti tutte le volte che apri la Form.
Pertanto per evitare che venga applicato un filtro non voluto, allora in FormLoad la prima cosa che farai sarà quella di resettare le impostazioni del Filtro. In questo modo sei sicuro che il comportamento del filtro rispecchi ciò che desideri.
Ma del resto quando si unsano dei controlli e delle proprietà, è buona norma inizializzare sempre i valori all'apertura della form, in modo da rispettare rigorosamente la logica che voi impostare per la form.
Vedrai che in questo modo non avrai mai problemi. ;-)
Per esempio il codice completa risulterà essere una cosa di questo tipo:
' FORM LOAD
Private Sub Form_Load()
' reset Filter
ResettaFiltro
End Sub
' COMBOBOX CITTA' - SET FILTER
Private Sub CercaCitta_AfterUpdate()
' check if active filter
If Me.FilterOn Then
' update filter
Me.Filter = Me.Filter & " AND [Citta] = '" & Me.CercaCitta & "'"
Else
' set filter
Me.Filter = "[Citta] = '" & Me.CercaCitta & "'"
End If
' apply filter
Me.FilterOn = True
End Sub
' COMBOBOX NOME - SET FILTER
Private Sub CercaNome_AfterUpdate()
' check if active filter
If Me.FilterOn Then
' update filter
Me.Filter = Me.Filter & " AND [Nome] = '" & Me.CercaNome & "'"
Else
' set filter
Me.Filter = "[Nome] = '" & Me.CercaNome & "'"
End If
' apply filter
Me.FilterOn = True
End Sub
' BUTTON RESET FILTER
Private Sub EliminaFiltro_Click()
' reset filter
MyResetFilter
End Sub
' RESET FILTER
Private Sub MyResetFilter()
' reset filter
Me.Filter = ""
Me.FilterOn = False
' reset combobox
Me.CercaCitta = ""
Me.CercaNome = ""
End Sub
Tutto qua, molto semplice ;-)