Condividi tramite

Funzione Filter in Access

Anonimo
2017-09-03T20:05:23+00:00

In una mia piccola applicazione personale in Access si trova una maschera che elenca una serie di fatture, in questo elenco è presente un campo sì\no denominato "liquidata". Tramite un elenco di opzioni vorrei filtrare questo elenco in questo modo: tutte, liquidate, da liquidare. In sostanza il gruppo di opzioni dovrebbe essere gestito da una routine evento che filtri i dati in base alla scelta nel gruppo di opzioni. Purtroppo non ricordo più la sintassi della funzione "filter". Mi aiutate? Sono piuttosto arrugginito, non mi avvicino ad access da circa un anno. Grazie

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

3 risposte

Ordina per: Più utili
  1. Anonimo
    2017-09-04T14:51:49+00:00

    ciao Fangio49,

    se si tratta di una sottomaschera, se hai impostato il gruppo opzioni nella sottomaschera cambia poco, l'importante è che il riferimento della proprietà filter sia impostata come da codice postato, altrimenti se il gruppo opzioni è nella main form devi modificare i riferimenti impostando quelli della subForm :

    Me!SubForm.Form.Filter = strFilter

    Me!SubForm.Form.FilterOn = True

    l'errore :

    [...]

    La dichiarazione della routine non corrisponde alla descrizione dell'evento o della routine con lo stesso nome"

    [...]

    è strano e riesco solo a simularlo se imposto :

    Private Sub Form_Open(Cancel As String)

    With Me

        .Filter = "1=0"

        .FilterOn = True

    End With

    End Sub

    string al posto di integer....

    prova a verificare che non ci siano errori banali di battitura anche se quelle parti di codice sono scritte da VBA in automatico...

    Ancora, potrebbe essere generato da altro...con queste poche info difficile da dire...

    prova ad aprire il VBE e scegliere debug-> compila, e correggi tutti gli errori.

    Imposta magari se non fatto anche option explicit in testa al modulo/moduli.

    Facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-09-04T13:49:32+00:00

    Ti ringrazio, ma pare non funzionare. Ecco come ho proceduto:

    Precisazione: in realtà si tratta di una sottomaschera;

    • ho creato il gruppo di opzioni denominato grpFilter
    • nel gruppo ho inserito i tre pulsanti
    • ho inserito il codice che mi hai fornito, ovviamente sostituendo il termine "liquidata" con il nome del campo (chkLiq)
    • cliccando sui pulsanti ottengo il seguente mex di errore: "L'espressione Dopo aggiornamento immessa della proprietà di evento ha generato l'errore seguente: La dichiarazione della routine non corrisponde alla descrizione dell'evento o della routine con lo stesso nome"

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-09-04T05:46:45+00:00

    ciao Fangio49,

    supponendo che il gruppo opzioni si chiami grpFilter, prova qualcosa del genere.

    Ho inserito nell'evento su apertura codice tale per cui imposti un filtro che non restituisce nessuna riga e su dopo aggiornamento del gruppo opzioni l'impostazione del filtro.

    Il gruppo opzioni deselezioni by design la selezione precedente post nuova selezione quindi è di molto aiuto in casi come i tuoi.

    Facci sapere.

    Ciao, Sandro.

    Private Sub Form_Open(Cancel As Integer)

    With Me

        .Filter = "1=0"

        .FilterOn = True

    End With

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    With Me

        .Filter = vbNullString

        .FilterOn = False

    End With

    End Sub

    Private Sub grpFilter_AfterUpdate()

    Dim strFilter As String

    With Me

        Select Case .grpFilter

            Case 1

                strFilter = "liquidata=-1"

            Case 2

                strFilter = "liquidata=0"

            Case 3

                strFilter = vbNullString

        End Select

        .Filter = strFilter

        .FilterOn = True

    End With

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento