Consiglio su caselle combinate

di il
7 risposte

Consiglio su caselle combinate

Buona sera,
vorrei chiedere un consiglio, se possibile.
Su una maschera ho un pulsante che che se premuto apre un report associato a una uery. la query di questo report è una query unione in modo tale che ad ogni anno visualizzo certi dati (es. 2016--->seminato 10 ettari--->non raccolto; 2017--->seminato 20 ettari--->raccolto;).
A seconda delle volte ho bisogno che sul report siano visibili certi anni invece di altri, quindi ho creato due caselle controllo, una per 2016 e una per 2017 (sulla maschera), con annessi codici inseriti sul report... ma non mi dilungo su questa parte perchè tanto funziona tutto molto bene. Arrivo al problema; dal momento che tra poco inserirò dati relativi al 2018, volendo evitare di creare una casella di controllo per ogni anno (cioè non voglio creare una chk anche per il 2018 e poi il prossimo anno rimettere mano al db creando una chk per 2019), come potrei fare ?
Avevo in mente queste due idee (probabilmente errate):
- creo una sottomaschera, nella maschera con i suddetti controlli, associata a query unione che mi riepiloga gli anni, e accanto a ogni record ci faccio comparire una casella controllo si/no, come se fossero le mie vecchie chk.
- si può creare una combobox associata a query unione, che mi faccia avere accanto ad ogni valore un chk?

Immagino di aver sparato delle cavolate. Chiedo scusa
Apertissimo a qualsiasi soluzione

Vi ringrazio per l'ascolto

Jibi

7 Risposte

  • Re: Consiglio su caselle combinate

    L'idea delle checkbox così progettate è pessima.
    Quando vuoi visualizzare il tuo report, ti serve vedere un anno solo? Anche 2 anni? Anche 3 anni? Anche dal AnnoX al AnnoY?

    jibi ha scritto:


    Avevo in mente queste due idee (probabilmente errate):
    - creo una sottomaschera, nella maschera con i suddetti controlli, associata a query unione che mi riepiloga gli anni, e accanto a ogni record ci faccio comparire una casella controllo si/no, come se fossero le mie vecchie chk.
    - si può creare una combobox associata a query unione, che mi faccia avere accanto ad ogni valore un chk?
    Potresti creare una tabella con i campi:
    Anno
    X (tipo Sì/No)
    Immaginando di avere gli anni dal 2010 al 2020 e tu vuoi "scegliere" solo 2015, 2017, 2019, richiami tale tabella (magari usi una maschera per gestire meglio il tutto) mettendo le apposite spunte. Poi rivedi la tua query in funzione dei valori True che hai spuntato. Al termine di ciò dovrai avere l'accortezza di re-impostare tutti i valori di X su False.
  • Re: Consiglio su caselle combinate

    Mi serve vedere uno o più anni distinti e non consecutivi talcolta, non dall anno x all y
    Grazie per la risposta e per i consigli
  • Re: Consiglio su caselle combinate

    Grazie per il consiglio!
    Jibi
  • Re: Consiglio su caselle combinate

    Senza dover creare una tabella puoi usare un controllo Listbox dove :
    • nella proprietà Origine riga devi inserire una query che riepiloga gli anni in archivio
    • nella proprietà Selezione multipla devi selezionare Semplice o Estesa
    • creare una routine dove recuperare gli anni selezionati per l'impostazione del filtro della query su cui è basato il report
  • Re: Consiglio su caselle combinate

    Grazie mille anche a te Carletto!
    Ho eseguito entrambi i consigli.
    Volevo chiedere un'ulteriore cosa: cosa dovrei scrivere nei criteri del campo "anno" di una (ulteriore) query, perché questo campo venga filtrato dai valori selezionati dalla listino?
    Ho provato con [Maschere]![m1]![listbox_1] ma non viene nulla. Immagino che abbia sbagliato a scriverlo
    Volevo provare a far tutto tramite criterio della query più che tramite vba, ma di sicuro sto sbagliando...
    Grazie !!
  • Re: Consiglio su caselle combinate

    CarlettoFed ha scritto:


    creare una routine dove recuperare gli anni selezionati per l'impostazione del filtro della query su cui è basato il report
    Credo che questo sia un punto focale per te. Considera che il filtro dovrà avere una sintassi del tipo
    Valore1 OR Valore2 OR Valore3
    e per ottenerla devi "ciclare" qualcosa. Questo risultato può restituirtelo solo una routine in VBA.
  • Re: Consiglio su caselle combinate

    OsvaldoLaviosa ha scritto:


    CarlettoFed ha scritto:


    creare una routine dove recuperare gli anni selezionati per l'impostazione del filtro della query su cui è basato il report
    Credo che questo sia un punto focale per te. Considera che il filtro dovrà avere una sintassi del tipo
    Valore1 OR Valore2 OR Valore3
    e per ottenerla devi "ciclare" qualcosa. Questo risultato può restituirtelo solo una routine in VBA.
    L asintassi del "Filtro" che proponi è pericolosa per 2 motivi:
    1° Se scrivi così in realtà uno può facilmente travisare alla sintassi errata di questo tipo:
    "NomeCampo=Valore1 OR Valore2 Or Valore3"
    2° Ipotizzando invece tu volessi suggerrire la sintassi giusta:
    "NomeCampo=Valore1 OR "NomeCampo=Valore2 Or "NomeCampo=Valore3"
    sarebbe poco ottimizzata per i cicli di esecuzione nell'applicazione in OR dei criteri soprattutto se il campo NON è indicizzato implica l'esecuzione di un TableScan ad ogni OR..., visibile solo con l'analisi dei piani di esecuzione delle query.
    Tuttavia nei casi in cui serve comporre un elenco si preferisce utilizzare una struttura differente, non migliora nulla in prestazioni ma rende la vita facile nella creazione della sintassi ed è preferibile proprio in questi casi in cui una MultiSelezione può rendere conveniente usare la Clausola IN
    "NomeCampo IN(Valore1, Valore2, Valore3)"
Devi accedere o registrarti per scrivere nel forum
7 risposte