Condividi tramite

Filtri su sottomaschera

Anonimo
2015-10-12T19:23:55+00:00

Salve,

ho costruito una maschera all'interno della quale è presente una sottomaschera. Nella parte alta di questa maschera sono presenti diverse caselle di testo e combo box che fungono da inserimento per successiva ricerca multipla sulla sottomaschera.

La sottomaschera è basata su una query dove all'interno della stessa per tutte le caselle di testo ho inserito nei criteri delle ricerche Like "*" & [Forms]![Maschera]![Cerca4] & "*". Mentre per i combo box ho inserito il seguente codice per filtrare i dati selezionati:

Private Sub Morfologiatxt_AfterUpdate()

    Me!RoseRicerca.Form.Filter = "Morfologia = '" & Morfologiatxt & "'"

    Me!RoseRicerca.Form.FilterOn = True

End Sub

Private Sub Strutturatxt_AfterUpdate()

Dim strfilter As String

If Me!Morfologiatxt <> "" Then

   Me!RoseRicerca.Form.Filter = "Morfologia='" & Morfologiatxt & "'"

   Me!RoseRicerca.Form.Filter = Me!RoseRicerca.Form.Filter & " AND Struttura='" & Strutturatxt & "'"

   Me.RoseRicerca.Form.FilterOn = False

   Me.Filter = False

   Me.Filter = Me.RoseRicerca.Form.Filter

   Me.FilterOn = True

Else

   Me!RoseRicerca.Form.Filter = "Struttura Like '" & Strutturatxt & "'"

   Me!RoseRicerca.Form.FilterOn = True

End If

End Sub

Avendo diverse combo box vorrei poter effettuare ad esempio un primo filtro poi un secondo su quello esistente e poi un terzo su i due esistenti fino a conclusione delle combobox. Sono riuscito attualmente a fare solo filtri multipli annidati, che però non sono fungono al mio obiettivo finale.

Come potrei fare?

Grazie

Claudio

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
2015-10-12T20:13:50+00:00

ciao Claudio,

la cosa più semplice potrebbe essere quella di concatenare il filtro ed applicarlo a seconda di quanto è selezionato nella combo/ nelle comboboxes, un po' come questo esempio. http://1drv.ms/1OxEkVt claudioFerrara.accdb.

E' facile aggiungere oltre alle tre combo che trovi nella demo altre combo a tua discrezione, basta semplicemente che aggiungi codice simile a quello già presente.

Per capire bene come la demo funziona, seleziona prima un cliente poi filtri per impiegato ed infine per corriere.

se non hai una relazione uno a molti da gestire puoi limitarti ad una sola maschera....evitando la sottomaschera....un po' come la demo sopra indicata.

facci sapere.

HTH.

Ciao, Sandro.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

32 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-10-15T08:58:32+00:00

    Ciao,

    prova con:

    strFilter = strFilter & "Squadra Like '*" & Me.Cerca5 & "*'"

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-10-14T21:20:46+00:00

    Ciao Sandro

    ti ringrazio per i tuoi consigli. Ho provato come mi hai suggerito ad inserire nella funzione un paio di testbox il tutto funziona. I dati vengono filtrati in base all'inserimento immesso nella casella di testo, questo però considerando il caso in cui io digito l'intera voce da ricercare (Esempio Pippo). Non sono riuscito ad utilizzare il comando like nella funzione per avere l'effetto che digitando una lettera alla volta progressivamente il campo viene filtrato in base ai caratteri digitati nella textbox. Ho provato come riportato sotto ma mi restituisce Falso

     If Nz(Me.Cerca5) <> "" Then

            If strFilter <> "" Then

                strFilter = strFilter & " AND "

            End If

            strFilter = strFilter & "Squadra ='" Like "*" & Me.Cerca5 & "*" & "'"

    End If

    Grazie mille

    Claudio

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-10-14T11:12:24+00:00

    ciao Claudio,

    scusa il ritardo nella risposta ma sono un po' preso e riesco a seguire poco...sorry...

    il metodo migliore per ottenere quanto chiedi è certamente filtrare la form più che impostare i criteri nella query.

    se tutti i controlli della form sono associati alla tabella potresti...effettivamente filtrare la tabella, il recordSource della maschera quindi sarà la tua tabella e non la query.

    se il criterio è definito in una text box, certo che si...la tecnica non cambia, inseriscilo nella funzione e vedrai che riesci a filtrare anche 1/2 textBox, quelli che chiami tanti like se necessiti devi però mantenerli.

    la funzione che ti ho proposto, è....un po ' statica...nel senso....customizzata a seconda di questo scenario specifico e poi, come vedi....ad ogni controllo che inserisci la devi variare...

    Ora...sarebbe bello cercare una soluzione più flessibile ed applicabile a scenari diversi...

    cosa intendo...

    nel tuo caso hai, invento...tre combo 3 due texbox...supponi domani di dover filtrare una form con 5 combo e tre textboxes...tutto da rifare....mmmm...no...qualcosa di meglio si può fare...!

    ci penso un po' su...anche perché....sto andando un po' OT.

    Facci sapere per quanto alle textBoxes, in serata se riesco posto qualcosa per rendere la funzione un po' più flessibile...

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-10-13T22:16:19+00:00

    Ciao Sandro,

    ho visto la demo e ho adattato questa soluzione alla mia esigenza è perfetta spettacolare, ho limitato il tutto ad una sola maschera in quanto tutti i dati tranne uno di cui posso fare a meno sono residenti nella tabella principale.

    Sistemati i filtri delle combo box, a questo punto però, vorrei evitare di utilizzare i tanti like che ho nei criteri dei campi presenti nella query su cui si basa la maschera, che vengono ricercarti tramite l'immissione dei singoli caratteri nelle caselle di testo che fungono come ricerche nella parte alta della maschera. Si potrebbe utilizzare il codice per avere lo stesso effetto evitando di inserire la stringa Like "*" & [Forms]![Maschera]![Cerca4] & *"" su ogni campo della query che voglio filtrare ?

    Grazie mille

    Claudio

    La risposta è stata utile?

    0 commenti Nessun commento