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: Meno recente
  1. Anonimo
    2012-09-18T16:29:31+00:00

    il nome del campo (f_nome) sarebbe una stringa? Sì

    è per questo che si inizia con i doppi apici? Sì

    e la wildcard *? Dice all'Sql di estrarre tutti i nomi che iniziano e finiscono come gli pare ma contengono il valore richiesto

    fl_trim è una combo box OK ma il nome della combo box è proprio fl_trim????

    La stringa

    f_nome like '*CISA CERAMICHE*' AND trimestre = 4

    anche a me sembra esatta ma per verifica prova a copiarla nella condizione della query origine della form (ovviamente in due blocchi) ed esegui la query

    like '*CISA CERAMICHE*'  sotto  la colonna f_nome

    4   sotto la colonna trimestre

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-09-18T17:16:14+00:00

    No , so a cosa serve * , volevo capire se anche la wildcard necessita di apici :)

    Si flt_trim è una combobox e si è il suo nome

    Mettendo i dati sulla query mi restituisce i record che mi interessano :)

    Grazie ancora per lo sbattimento :)

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-09-19T07:19:00+00:00

    Buongiorno,

    ripartiamo dal tuo codice (puoi rimandarmi l'ultima versione)

    e dagli errori che ti da' nhelle diverse combinazioni (1 filtro, 2 filtri ....)

    perchè apparentemente il risultato è corretto:

    myfiltrer="f_nome like '*CISA CERAMICHE*' AND trimestre = 4"

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-09-19T09:16:54+00:00

    Buongiorno a te :)

    scusa il ritardo ma ero preso dal lavoro.

    il codice in questione è questo :

    Private Sub Comando39_Click()

      Dim myfilter As String

        If Not IsNull(flt_fornitore) Then

        myfilter = " f_nome like '*" & flt_fornitore & "*' And trimestre = " & flt_trim

        Else

    End If

        Me.Filter = myfilter

        Me.FilterOn = True

    End Sub

    l'errore me lo segna su Me.FilterOn= True , ma suppongo che lo faccia perchè trova "tipi di dati non corrispondenti" e non un problema di sintassi.

    questo errore me lo da se popolo entrambi i filtri e se può servire mi mette sopra anche : Errore run-time '3464':

    tipi dati non corrispondenti nell'espressione criterio.

    Se invece popolo solo il primo filtro flt_fornitore, mi da questo errore:

    Errore di run-time '3075':

    Errore di sintassi (operatore mancante) nell'espressione della query ' f_nome like '*cisa ceramiche*' And trimestre = '. (qui suppongo che il problema è che non avendo valore flt_trim, dovrei fare in modo di eliminare And trimestre.

    Se invece popolo solo flt_trim ed applico il filtro , non da errore ma il filtro non viene applicato..

    La risposta è stata utile?

    0 commenti Nessun commento