Maschera filtrata da combobox

di il
15 risposte

Maschera filtrata da combobox

Ciao a tutti,
vorrei sapere se potreste aiutarmi a mettere in una maschera un combobox per filtrare i dati di un'altra maschera.
In pratica, ho una maschera M01 con un combobox già predisposta con tutti i valori che il campo può assumere; vorrei che quando seleziono una delle opzioni del combobox mi si apra il contenuto dell'altra maschera M00_sped_tot, ma filtrato per il valore del combobox.

Potreste aiutarmi?
Grazie!!!

15 Risposte

  • Re: Maschera filtrata da combobox

    L'azione OPENFORM che chiami per aprire la Maschera, dispone del Parametro chiamato [WHERE CONDITION] che altro non è che il criterio di Filtro da applicare alla Maschera in apertura.

    Quindi nel tuo caso dovrai passarlo costruendo la sringa indicando NomeCampo al quale applicarlo...!
    
    DoCmd.OpenForm "NomeForm", , , "NomeCampo=" & Me!NomeCombo.Value
  • Re: Maschera filtrata da combobox

    Parallelamente al discorso di @Alex, si può ottenere lo stesso risultato con una macro avente l'azione ApriMaschera, con:
    Nome maschera: M00_sped_tot
    WHERE: [NomeCampo]=[Maschere]![M01]![NomeCampoComboBox]
  • Re: Maschera filtrata da combobox

    Grazie!!
    Ci sono riuscita grazie al metodo ApriMaschera.

    Ora vorrei fare una cosa un po' più complessa:
    poichè i combobox che filtrano la maschera M01 sono più di uno, vorrei fare in modo che prima inserisco tutti i valori nei vari combobox e poi premo un pulsante che effettua i filtri tutti insieme e mi apre la maschera filtrata.

    nelle proprietà dei combobox dove dovrei inserire la macro? Finora l'ho messa "su clic", ora dovrei metterla a "dopo aggiornamento"?
    e qual è la macro che me li "filtra" tutti insieme?

    Spero di essere stata chiara,
    Grazie!!!
  • Re: Maschera filtrata da combobox

    Con le macro non si può fare in quanto devi prima validare i criteri poi concatenarli, fattibile solo via Vba.
    Se non sei dispista a fare il passo hai solo limiti, ed io mi fermo qui.
  • Re: Maschera filtrata da combobox

    maria_1029 ha scritto:


    i combobox che filtrano la maschera M01 sono più di uno
    Io ho capito che la maschera M01 fa da filtro verso la maschera M00.

    maria_1029 ha scritto:


    qual è la macro che me li "filtra" tutti insieme?
    Credo che si possa ancora fare con macro. Sperando di aver compreso bene il meccanismo tu devi:
    1. Cliccare su tutte le combobox (nessun evento deve essere associato a ciascuna combobox)
    2. Su clic di un pulsante---->ApriMaschera
    WHERE: [Maschere]![M01]![Campo1] And [Maschere]![M01]![Campo2] And [Maschere]![M01]![Campo3]...ecc...

    C'è soltanto un piccolo problema. Se tu non desideri filtrare ad es. Campo2, la WHERE potrebbe non riconoscere il valore Null e inviare un messaggio di errore, allora occorre correggere qualcosa...adesso mi sfugge...forse una IIf su ogni campo...per far quadrare il tutto. Per ora prova a fare qualche tentativo.
  • Re: Maschera filtrata da combobox

    Non voglio essere troppo pignolo, ma quando si sviluppa si deve tener conto che l`utente possa anche non inserire un criterio.... nel tuo esempio sarebbe fallimentare.
    Se leggi, ho scritto Validazione dei Criteri e solo dopo Concatenazione.

    Suggerisco sempre una riflessione qualitativa a piu ampio spettro.
  • Re: Maschera filtrata da combobox

    So di non essere per niente esperta, ma a lavoro mi hanno obbligato a costruire questo DB partendo da zero e chiaramente sto incontrando non poche difficoltà.

    Comunque dopo vari tentativi, sono finalmente riuscita a fare la prima operazione anche via VBA.
    Adesso ciascun combobox può filtrare la maschera per il valore selezionato, ma vorrei capire come posso fare a filtrarli contemporaneamente per i valori dei vari combobox.

    Grazie!!!
  • Re: Maschera filtrata da combobox

    Secondo me la WHERE nella azione ApriTabella, può essere espressa, immaginando 4 campi (combobox), così:
    IIf([Maschere]![NomeMaschera]![Campo1]="";"*";[Maschere]![NomeMaschera]![Campo1]) And IIf([Maschere]![NomeMaschera]![Campo2]="";"*";[Maschere]![NomeMaschera]![Campo2]) And IIf([Maschere]![NomeMaschera]![Campo3]="";"*";[Maschere]![NomeMaschera]![Campo3]) And IIf([Maschere]![NomeMaschera]![Campo4]="";"*";[Maschere]![NomeMaschera]![Campo4])
    poi se hai intrapreso la strada VBA, abbandono il campo.
    Se tu raccontassi un po' più nei dettagli come si chiamano questi campi, avremmo un'idea più completa del tutto.
  • Re: Maschera filtrata da combobox

    Osvaldo la sai la differenza tra inserire un CRITERIO CONCATENATO con [*] e non introdurlo nell'elenco criteri...?
    Chiedo in quanto da come hai gestito il CRITERIO mi è venuto un dubbio...
  • Re: Maschera filtrata da combobox

    @Alex ha scritto:


    Osvaldo la sai la differenza tra inserire un CRITERIO CONCATENATO con [*] e non introdurlo nell'elenco criteri...?
    Chiedo in quanto da come hai gestito il CRITERIO mi è venuto un dubbio...
    Non ho capito la domanda.
    Ho scritto quel filtro WHERE dando per scontato che i 4 campi siano tutti Testo. Penso che se l'utente non sceglie nulla, si sottointende che quel campo avrà valore Null, perciò io dò il via libera con l'asterisco.
    Veramente non sono nemmeno sicuro di aver compreso a pieno il quesito di maria_1029.
    Io stesso non colgo un filtro su 4 campi per filtrare l'apertura di una maschera...sicuramente qui casca l'asino, per questo ho richiesto a maria di esporre un po' più terra terra il problema.
  • Re: Maschera filtrata da combobox

    Ciao Osvaldo,
    secondo me hai capito tutto bene, e quello che hai scritto forse è funzionante, ma non funzionale.
    Dico Forse in quanto sai che se si usa il JOLLY serve il [LIKE] e non [=]... e poi mancano gli APICETTI... per i campi testo...

    Ma la mia osservazione era, tuttavia, decisamente più tecnica...!

    Quando un CRITERIO è [*] ovviamente viene applicata la selezione di tutto... purtroppo però non è INDOLORE...!
    Se poi Metti
    
    Campo1 LIKE '*' AND Campo2 LIKE '*' AND Campo3 LIKE '*'
    Ora questi CRITERI, 3, sostanzialmente fanno un modo che vengano selezionati TUTTI i records... avendo inseirto il JOLLY.
    Dovresti analizzare la query vedendo come viene ESEGUITA, per ogni RECORD viene eseguito 3 VOLTE il confronto, non solo... visto che l'operatore AND è abbastanza bastardo...

    Prova a cercare in Rete:
    MS Access – JET SHOWPLAN
    e ti si apre un mondo... purtroppo complesso e di difficile concretizzazione.

    Questo è veramente un modo per rendere le Queries INEFFICIENTI... e già JET non brilla per velocità.

    Per questo, io ho suggerito una cosa strutturata diversamente, che ESCLUDE il criterio nel caso non serva, e non che IMPONGA il JOLLY...
  • Re: Maschera filtrata da combobox

    Io adesso ho questo:

    Private Sub CasellaCombinata1_Click()

    DoCmd.OpenForm "M00_spedito_tot", , , "GL_CLASS=" & "'" & Me!CasellaCombinata1.Value & "'"

    End Sub


    Private Sub CasellaCombinata2_Click()

    DoCmd.OpenForm "M00_spedito_tot", , , "YEAR_BOL_DATE=" & Me!CasellaCombinata2.Value

    End Sub


    Private Sub CasellaCombinata3_Click()

    DoCmd.OpenForm "M00_spedito_tot", , , "MONTH_BOL_DATE=" & Me!CasellaCombinata3.Value

    End Sub


    Private Sub CasellaCombinata4_Click()

    DoCmd.OpenForm "M00_spedito_tot", , , "AM_NAME=" & "'" & Me!CasellaCombinata4.Value & "'"

    End Sub


    Private Sub CasellaCombinata5_Click()

    DoCmd.OpenForm "M00_spedito_tot", , , "TERRITORY_SHORT_NAME=" & "'" & Me!CasellaCombinata5.Value & "'"

    End Sub

    Ogni volta che seleziono un valore del combobox, mi apre la maschera "M00_spedito_tot" filtrata per il valore che ho selezionato.

    Vorrei invece poter prima selezionare tutti i valori dei combobox e poi filtrare la maschera "M00_spedito_tot" per tutti i valori contemporaneamente e non solo uno alla volta.

    spero adesso di essere stata chiara!
    Grazie mille per l'aiuto
  • Re: Maschera filtrata da combobox

    Sei stata chiarissima, come lo eri stata prima... in cosa invece non siamo stati chiari noi con i suggerimenti dati affinchè tu possa applicare la soluzione, o almeno effettuare dei tentativi in quella direzione...?
  • Re: Maschera filtrata da combobox

    Non ho capito come potrei realizzarlo in VBA..
Devi accedere o registrarti per scrivere nel forum
15 risposte