Creazione maschera con più filtri

di il
13 risposte

Creazione maschera con più filtri

Salve a tutti, ho creato un database molto elementare, dove praticamente ho una tabella chiamata "scheda", dove vado ad inserire vari dati: ' nome, cognome, ditta, indirizzo, civico, città, categoria, modifica, data, note'

Ho creato un filtro su una maschera, utilizzando una casella combinata (citta) dove mi visualizza solo i dati delle ditte che sono di quella città. Il problema è che dovrei filtrare oltre che per città anche per indirizzo e civico, ma senza utilizzare una casella combinata, inquanto in prospettiva ci saranno troppi indirizzi e quindi la casella combinata risulterebbe infinita . Ho provato invano a creare caselle di testo e modificare la query ricerca ma senza esito positivo...

Chiedo aiuto a voi.
Grazie mille e scusate per il wall text.

13 Risposte

  • Re: Creazione maschera con più filtri

    Hai provato a usare il "filtro in base a maschera"? Ti permette di filtrare più campi sfruttando tutti gli AND e OR che vuoi.
  • Re: Creazione maschera con più filtri

    Il mio problema è che volevo creare due sezioni distinte, dove praticamente sopra inserivo i campi di ricerca e sotto compariva in tabulazione la visuale delle ditte richieste, magari usando anche una sotto maschera in modo tale da eliminare i permessi di scrittura.
    Comunque provando con i filtri a maschera ci sono quasi, però non trovo il pulsante in modo da piazzarlo. Anche perché questo database lo dovrò usare in ufficio, ma ci sono anche altre persone che useranno questo dB e sfortunatamente non sanno neanche come si accende il pc. Quindi vorrei creare varie maschere come inserimento, modifica e ricerca, distinte tra loro, così da avere il minor numero di problemi possibile.

    Edit : mi sono dimenticato di specificare che lavoro con access 2003 :/
  • Re: Creazione maschera con più filtri

    Quello che ti ho proposto è l'uso di un COMANDO offerto da Access. Per me bisognerebbe imparare un po' di comandi base e ritengo che questo sia molto utile, a portata di mano ecc... Molti utenti ci chiedono di "guidare" l'utente verso un qualcosa di simile e/o più chiaro e/o intuitivo. Occorre progettare per bene un gioco di maschere con opportune etichette esplicative e giochi di codice VBA che (secondo me), prima o poi devono condurre a...

    Blaine ha scritto:


    provando con i filtri a maschera ci sono quasi, però non trovo il pulsante in modo da piazzarlo
    Crea un pulsante e all'evento "Su clic" associ
    DoCmd.RunCommand acCmdFilterByForm
    Mi sono ricordato che in un mio database ho costruito una maschera singola X avente lo stesso look della maschera quando clicchi sul tasto "Filtro in base a maschera". In basso a questa maschera X ho messo una etichetta con su scritto:
    "Imposta il tuo filtro, poi clicca in alto sul tasto Applica filtro."
    Ovviamente si può migliorare/abbellire come si vuole. Direi che entriamo nel campo della "personalizzazione".
  • Re: Creazione maschera con più filtri

    Sfortunatamente mi dice impossibile trovare la macro DoCmd. Dicendo che la macro non esiste oppure è nuova ma non è stata ancora salvata.
  • Re: Creazione maschera con più filtri

    Intanto chiariamo una cosa. Conosci un po' di VBA (Visual Basic for Application) che è una cosa integrata in Access? Oppure preferisci e/o conosci solo le macro?

    Quello che ti ho scritto è una sola riga di codice VBA. Esiste l'equivalente macro EseguiComando--->FiltroInBaseAMaschera.
    Non so...o non capisco dove tu hai cliccato/scritto affinchè ti mostri errore. Quel codice esiste in tutte le versioni di Access...(credo)! Puoi raccontare passo passo cosa hai fatto?
  • Re: Creazione maschera con più filtri

    Allora rispondendo alle domanda vba come linguaggio non lo conosco, capisco di cosa si parla perché ho fatto un po' di programmazione.
    In merito alle macro, sicuramente le preferisco inquanto più pratiche,.

    Allora ripartendo dalla creazione della tabella, ho fatto una query(riordino data) che mi ordina per data tutta la tabella, così da poter visualizzare le ditte in base all'ultima Modifica.
    Ho creato una maschera tabulati (ricerca) dalla query' riordino data', dove nel corpo ho i dati in ordine di data, nel l'intestazione ho fatto un interruttore e utilizzando proprietà-> evento ho scritto nell'ordine 'su clic' il tuo. Comando, vado a provare e mi da errore.

    Comunque ho fatto una macro come mi hai suggerito tu ed assegnando a quella macro all'interruttore ora va.

    Però ho notato che il filtro in base maschera mi da solamente i risultati esatti, mentre io vorrei anche eventualmente i parziali (es: ricercando l'indirizzo, senza dover mettere tutto, ma solo in parte).


    Grazie mille comunque per l'aiuto che mi state fornendo!
  • Re: Creazione maschera con più filtri

    Ho provato inserendo l'asterisco prima della ricerca e funziona come like, ora mi chiedo se fosse possibile farlo di default, così da non far inserire all'utente l'*
  • Re: Creazione maschera con più filtri

    Blaine ha scritto:


    ho fatto un interruttore e utilizzando proprietà-> evento ho scritto nell'ordine 'su clic' il tuo. Comando, vado a provare e mi da errore.
    Rispondo dando 2 soluzioni.
    Via macro
    1. Devi creare una macro in visualizzazione struttura, quindi scegliere l'azione EseguiComando--->FiltroInBaseAMaschera
    2. Salva la macro con nome FBM
    3. Vai in visualizzazione struttura maschera, seleziona il pulsante, mouse destro Proprietà, scheda Eventi, Su clic: FBM
    4. Salva tutto

    Via VBA
    1. Visualizzazione struttura maschera, seleziona il pulsante, mouse destro Proprietà, scheda Eventi, Su clic...avvicina il mouse all'estrema destra del rigo Su Clic e vedrai apparire un piccolo pulsantino con 3 puntini, cliccaci sopra
    2. Apparirà la tipica schermata del VBA con scritto in automatico
    Private Sub NomePulsante_Click()
    (rigo vuoto)
    End Sub
    3. Dentro il rigo vuoto ci scrivi il codice che ho suggerito prima
    4. Salva la schermata VBA e chiudi. Noterai in corrispondenza di Su clic: [Routine evento] che vuol dire che hai scritto qualcosa in VBA
    5. Salva tutto

    Blaine ha scritto:


    Però ho notato che il filtro in base maschera mi da solamente i risultati esatti, mentre io vorrei anche eventualmente i parziali (es: ricercando l'indirizzo, senza dover mettere tutto, ma solo in parte).
    Per le ricerche parziali valgono le normali regole del Trova dove puoi sfruttare i caratteri jolly da inserire nei campi stessi.

    Blaine ha scritto:


    Ho provato inserendo l'asterisco prima della ricerca e funziona come like, ora mi chiedo se fosse possibile farlo di default, così da non far inserire all'utente l'*
    Questa scelta ha 2 facce della medaglia. Molti utenti ce lo chiedono. Io dico "...e se una volta vorresti esattamente "Rossi" (non Rossini, non Magrossi...)?
    Se preferisci gli asterischi prima e dopo di default...devi gestire tutto con una progettazione di più alto livello...te la senti? Io preferisco fermarmi qui e lasciare volentieri la palla a un utente più esperto.
  • Re: Creazione maschera con più filtri

    Andare ad una progettazione di alto livello per l'utilizzo di questo DB è uno spreco di risorse e tempo, quindi magari farò una spiegazione nella maschera di ricerca.

    Un ultima cosa, ho notato che creando il pulsante filtro base maschera, anche se creo un pulsante applica filtro, lo stesso si disabilita e quindi per applicare il filtro devo perforza cliccare sulla barra di access. È l'unico modo per farlo?
    Thx

    Inoltre sto continuando a provare a creare delle caselle di testo per la ricerca, in modo tale che cliccando su un pulsante ricerca mi dia il risultato desiderato in base alle caselle che ho riempito (il filtro maschera va benissimo, ma graficamente mi piace di più cosi) , ma penso che debba entrare nella programmazione di VBA per avere quel risultato.
  • Re: Creazione maschera con più filtri

    Blaine ha scritto:


    ho notato che creando il pulsante filtro base maschera, anche se creo un pulsante applica filtro, lo stesso si disabilita e quindi per applicare il filtro devo perforza cliccare sulla barra di access. È l'unico modo per farlo?
    Prova a ragionare così. FiltroInBaseAMaschera è un COMANDO. ApplicaFiltro è un COMANDO. Tutti i comandi di Access stanno nella collection di EseguiComando (azioni macro) oppure DoCmd.RunCommand (VBA). Quindi puoi prevedere un altro pulsante o evento da scatenare che faccia ApplicaFiltro.
  • Re: Creazione maschera con più filtri

    OsvaldoLaviosa ha scritto:


    Blaine ha scritto:


    ho notato che creando il pulsante filtro base maschera, anche se creo un pulsante applica filtro, lo stesso si disabilita e quindi per applicare il filtro devo perforza cliccare sulla barra di access. È l'unico modo per farlo?
    Prova a ragionare così. FiltroInBaseAMaschera è un COMANDO. ApplicaFiltro è un COMANDO. Tutti i comandi di Access stanno nella collection di EseguiComando (azioni macro) oppure DoCmd.RunCommand (VBA). Quindi puoi prevedere un altro pulsante o evento da scatenare che faccia ApplicaFiltro.
    O.o ok, penso di aver capito, comunque domani provo e vediamo di far esplodere il dB.
    L'unica mia perplessità è quella che quando clicco sulla. Macro Fbm mi cambia la schermata e mi blocca tutti i pulsanti comando che ho creato. Comunque come dicevo devo provare domani a lavoro
  • Re: Creazione maschera con più filtri

    Blaine ha scritto:


    L'unica mia perplessità è quella che quando clicco sulla. Macro Fbm mi cambia la schermata e mi blocca tutti i pulsanti comando che ho creato.
    È un comportamento del tutto normale. Non ti fare ingannare dal look della maschera. In quel momento la "maschera" è lì che aspetta da te che inserisci i valori AND/OR da filtrare. Poi puoi solo cliccare su ApplicaFiltro.
  • Re: Creazione maschera con più filtri

    Il mio problema è che conosco poco access e vba.

    Conosco c++ e infatti ragionavo così:

    creo4 box testo (boxcittà, boxindirizzo, boxcivico, boxditta)
    Dove sono 4 array di testo.
    Poi facevo un loop dove
    X=1
    If [tabella,colonna (città), rigax]=[boxcitta] or[tabella, colonna(indirizzo,rigax)]=[boxindirizzo] or [tabella, colonna (civico),rigax]=[Boxcivico] or [tabella, colonna (ditta),rigax ]=[boxditta]
    show [tabella,rigax] ;
    Else
    rigax+1;
    Comando out.

    Ovviamente ci vogliono i contatori per girare nella tabella ed un contatore (in questo caso il pulsante) per uscire dal loop e chiudere il programma, inoltre dovrei mettere anche l'ipotesi della box vuota, che da quanto ho capito, basta usare like "x" per integrare tutti i risultati.

    Però in questo caso avrei 4 box di testo versatili e che si aggiornano autonomamente.

    Diciamo questo è una bozza di algoritmo, poi implementare è tutta in altra cosa.
Devi accedere o registrarti per scrivere nel forum
13 risposte