Macro per criteri interattivi query

di il
9 risposte

Macro per criteri interattivi query

Buonasera a tutti.
Cerco di spiegare nel modo migliore il mio problema.

Ho una tabella di partenza con tutti i dati da analizzare e tra questi ho la data espressa in gg/mm/aaaa.
Ho una serie di query , che operano con tutti i dati per ottenere il risultato richiesto.
Inizialmente come output dovevo restituire una maschera nella quale selezionando una macchina, veniva visualizzata la quantità media prodotta dalla stessa.
Ora, l’analisi deve essere interattiva con l’utente, che deve inserire un arco temporale così che nella maschera venga visualizzato il nuovo risultato.

Premettendo di non essere esperto, per risolvere la richiesta ragionai in tale mod:
Nell’intestazione della maschera ho inserito due caselle dove l’utente digita la prima e la seconda data; dopo tali caselle ho inserito un interruttore che, premendolo, aggiorna l’intero database tramite una macro inserita all’evento “su clic”.
Io pensavo di aggiungere i dati inseriti dall’utente come criterio nella colonna della data della prima query (es: dati compresi dal 4/06/2018 al 28/06/2018), cosicchè le query successive elaborino tutti i passaggi con solo i record riferiti a quel periodo.

Esistono dei comandi nella macro che assegnino i valori digitati dall’utente come criterio in una query del database? Oppure devo prendere un’altra strada?

Vi ringrazio anticipatamente.
Cordialmente
Manuele

9 Risposte

  • Re: Macro per criteri interattivi query

    Manuele98 ha scritto:


    Esistono dei comandi nella macro che assegnino i valori digitati dall’utente come criterio in una query del database? Oppure devo prendere un’altra strada?
    Butta un occhio qui...


    per quello che ho capito io è quello che ti serve...
  • Re: Macro per criteri interattivi query

    Ti ringrazio per la risposta, è quello che mi serviva.
    Però è nato un nuovo problema.. riesco ad inserire l’arco temporale e viene calcolato il nuovo risultato, però se cambio le date e aggiorno il database il processo si interrompe con un messaggio di errore : “ il motore del database non può bloccare la tabella “finale” perché in uso da un altro processo”.
    Come faccio ad interrompere il processo precedente ?
    Ho creato un interruttore che cancella le scelte precedenti però il messaggio continua a tornare ( se chiudo la maschera e la riapro non compare).

    Grazie,
    Cordialmente Manuele
  • Re: Macro per criteri interattivi query

    Potresti raccontarci tutto dettagliatamente su come usi i "filtri parametro" indicando i nomi propri di tutti gli oggetti coinvolti (tabelle, query, maschere, campi...)?
  • Re: Macro per criteri interattivi query

    Certamente.
    Ho una prima query “prima” nella quale estrapolo da una tabella di partenza tutti i campi che mi interessano in cui i principali sono le macchine, le ore lavorative e la data.
    Con delle query successive determino le ore lavorative totali per macchina, e in conclusione creo una query di creazione tabella ( tabella di nome “ finale”).
    Nella maschera chiedo all utente di inserire due date ([primadata] e [secondadata]) le quali le ho impostate come criterio nella prima query nel campo “data”, in questo modo:
    >=[Maschere]![maschera1]![primadata] and <=[maschere]![maschera1]![secondadata]
    Dopodiché premendo un interruttore (ho generato una macro) aggiorno tutto il database e mi vengono restituiti i risultati (presi dalla tabella “finale”)per le date inserite.
    Se cambio le date e aggiorno il database mi viene il messaggio di errore citato sopra (mi dice che la tabella “finale” è in uso in un altro processo e il motore del database non può interromperlo).
    Io ho creato un nuovo interruttore con il seguente codice:
    Me.primadata=Null
    Me.secondadata=null
    Per annullare le scelte precedenti.
    Inserisco le nuove date ma il messaggio torna, se chiudo la maschera e la riapro no.
    È possibile chiudere il processo una volta letti i risultati per poter inserire un nuovo arco temporale senza dover chiudere la maschera ?
  • Re: Macro per criteri interattivi query

    ...mmmhhh...considera che la query si "spiega/esplicita" in virtù dei 2 parametri da te inseriti. Ciò avviene proprio alla sua apertura. Per tanto non mi sorprende che qualcosa si inceppa.
    Per fare come dici tu...probabilmente dovresti:
    A) Gestire la query tutta in VBA
    B) Fare in modo (sempre via VBA) di chiudere solo la query per poi riaprirla

    ...però, da parte mia, mi manca qualche pezzo dettagliato dalla tua descrizione, per la quale non riesco a dirti molto di più...
  • Re: Macro per criteri interattivi query

    Ti ringrazio molto per la risposta.
    Non essendo esperto, in VBA non sono riuscito.
    Ho trovato un altra soluzione, sicuramente più banale, ma funziona...
    Ho inserito un interruttore, con evento su clic ho generato una macro che apre e chiude la maschera, così facendo posso inserire il nuovo arco temporale senza intoppi.

    Ringrazio nuovamente per le risposte.
    Cordialmente
    Manuele
  • Re: Macro per criteri interattivi query

    Manuele98 ha scritto:


    Ho trovato un altra soluzione, sicuramente più banale, ma funziona...
    Ho inserito un interruttore, con evento su clic ho generato una macro che apre e chiude la maschera, così facendo posso inserire il nuovo arco temporale senza intoppi.
    Prova anche quest'altra soluzione (non ho idea se funziona). Piuttosto che chiudere/aprire la maschera (che pare brutto a vedersi), potresti chiudere la query, impostare i parametri, rieseguire la query e impostarla come RecordSource della maschera. Oppure (non so ancora) fare un Requery della maschera.
  • Re: Macro per criteri interattivi query

    Ci proverò, grazie!
  • Re: Macro per criteri interattivi query

    Forse se posti un file di esempio sarebbe più facile aiutarti in quanto si riuscirebbe a controllare precisamente che cosa hai realizzato per poi individuare gli eventuali problemi.
Devi accedere o registrarti per scrivere nel forum
9 risposte