Applicare filtri multipli su maschera

Anonimo
2012-09-17T08:41:13+00:00

Salve , avrei la necessità di applicare un filtro multiplo su una form. Nel dettaglio dovrei filtrare prima per "fornitore" e poi per "trimestre". Avevo pensato di creare una combobox per "fornitore" (ma va bene anche una textbox) ed una textbox per "trimestre" e appunto filtrare in base ai valori presenti al loro interno.

Onestamente non so da dove iniziare dato che solitamente questi dati li filtro già dalla query ottenendo quello che mi interessa. Mi piacerebbe però apprendere come si fa a filtrare per cui accetto qualsiasi consiglio :)

Grazie anticipatamente.

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

Risposta accettata dall'autore della domanda

Anonimo
2012-09-19T09:35:59+00:00

Proviamo a fare qualche variazione.

Private Sub Comando39_Click()

  Dim myfilter As String

    If Not IsNull(flt_fornitore) Then

    myfilter = " f_nome like '*" & flt_fornitore & "*'"

    Else

    End If

    If Not IsNull(flt_trim) Then

       if len(myfilter) > 0 then

          myfilter = myfilter & " AND trimestre = " & flt_trim

       else

          myfilter = " trimestre = " & flt_trim

       endif

    Else

End If

     DoCmd.SetFilter , myfilter

End Sub

Se non sbaglio già dalla 2007 è stata introdotta la SetFiletr al posto di Me.Filter e Me.FilterOn ( proviamoci, io ho solo la 2010).

Ciao Mimmo

La risposta è stata utile?

0 commenti Nessun commento

34 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-09-17T13:44:34+00:00

    Sbaglio qualcosa nel codice ..

    ho provato così:

    Private Sub Comando39_Click()

    myfilter = ""

      If Not IsNull(flt_fornitore) Then

           myfilter = (flt_fornitore)

           Else

    End If

        Me.Filter = myfilter

        Me.FilterOn = True

    End Sub

    e così:

    Private Sub Comando39_Click()

      myfilter = ""

      If Not IsNull(flt_fornitore) Then

           If Len(myfilter) = 0 Then

              myfilter = flt_fornitore

           Else

    End If

    End If

        Me.Filter = myfilter

        Me.FilterOn = True

    End Sub

    ma mi da sempre lo stesso errore, operatore mancante .  Credevo che l'errore potesse essere qui : myfilter=flt_fornitore e l'ho sistemato mettendo myfilter=(flt_fornitore) ma a quel punto non da errore ma non applica il filtro.

    Grazie :)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-09-17T09:59:31+00:00

    Faccio 2 prove e vedo se riesco , in caso posto il codice e vediamo se e dove sbaglio ... intanto, ovviamente, Grazie :)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-09-17T09:09:57+00:00

    Ciao GoG,

    io solitamente metto in intestazione maschera le combo o le textBox che mi servono per filtrare più due bottoni "Applica Filtro" e "Rimuovi Filtro".

    Sul click di applica filtro l'istruzione di solito costruisce la stringa della condizione filtrante in base alle selezioni impostate dall'utente:

    es:

    condizione = "(idFornitore= " & me.cmbFornitore & ") AND "

    if trimestre = 1 then

       condizione = condizione & " (DataFornitura between #01/01/2012# AND #3/31/2012# ) AND "

    elseif trimestre= 2 then

      .....

    .....

    condizione = left(condizione, len(condizione)- 5   'Tolgo l'AND finale

    me.filteron= true

    me.filter = condizione

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-09-17T09:08:51+00:00

    Ciao GoG_,

    potresti utilizzare il comando Filter come nell'esmpio segunte:

        wFilter = ""

        If Not IsNull(Testo36) Then

           wFilter = "Year(Mn_Data) = '" & Testo36 & "'"

        End If

        If Not IsNull(Testo38) Then

           If Len(wFilter) = 0 Then

              wFilter = "Month(Mn_Data) >= " & Testo38

           Else

              wFilter = wFilter & " And Month(Mn_Data) >= " & Testo38

           End If

        End If

        Me.Filter = wFilter

        Me.FilterOn = True

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento