Problema Reportistica

di
Anonimizzato11279
il
6 risposte

Problema Reportistica

Salve.
Premetto che uso access 2007 e che ci sono sicuramente metodi più semplici per strutturare l'intero database, ma ormai è stato creato così e non è possibile modificarlo se visto che è in fase avanzata.

Il problema è che l'utente ha una maschera dove, inserendo determinati parametri, riceve i risultati attraverso un report.

Quali sono i parametri?
Faccio un esempio con dei libri e i parametri nell'esempio sono i seguenti:
(più o meno di 200 pagine e più o meno 10 anni di vita del libro)



Nella query ho collegato le caselle di controllo tra di loro con un AND.
Qual'è il problema? Che tutto funziona se spunto ad esempio più di 200 pagine e meno di 10 in età (si, c'è un errore nell'immagine che ho postato), ma se io volessi spuntare soltanto più di 200 pagine, non trova più risultati.

Com'è possibile risolvere questa situazione?
Cioè far vedere all'utente i record che corrispondono ai criteri che lui ha spuntato.
(sono tutti campi si/no).

Grazie mille.

6 Risposte

  • Re: Problema Reportistica

    Scusa ma le 2 Selezioni sono una l'ovvio opposto dell'altra, quindi mi auguro che tu non abbia 2 Campi per questo...!!!

    Posta il Codice SQL...
  • Re: Problema Reportistica

    Beh il mio era un esempio, l'importante è che si capisca cosa vorrei ottenere.
    Vorrei che l'utente avesse la possibilità di inserire determinati criteri e una volta fatto avviasse la ricerca aprendo il report (che ha come origine di dati una query)

    Il codice SQL della query sarebbe così:
    select *
    from libri
    where libri.numeropagine=casellacontrollo1 and libri.numeropagine=casellacontrollo2 and libri.eta=casellacontrollo3...


    Ripeto, così facendo nel report dell'esempio, viene l'elenco dei libri se metto <200 pagine e <10 anni, ma se io volessi soltanto quelli con <200 pagine non viene logicamente fuori nulla!

    Spero di essermi spiegato.
  • Re: Problema Reportistica

    Come ti ho spiegato... il campo NUMEROPAGINE non può avere 3 condizioni...
    Quindi se 200 è la soglia LIMITE, o sta da una parte o dall'altra...

    Sono 2 Condizioni dello stesso Concetto, pertanto se è vera una non può esserlo l'altra.

    Ne consegue che avere 2 CAMPI di CRITERIO per questa condizione è ERRATO.
    Ora il campo che chiami [NumeroPagine] da profano della tua logica, credo e spero sia un campo di tipo NUMERICO che contiene il Numero di Pagine... quindi non capisco come puoi assegnare un campo ON/OFF del Check..!

    In aggiunta i criteri del tuo predicato prevede 4 criteri tutti in AND, quindi devono essere VERI TUTTI contemporaneamente.

    Se non elimini quell'inutile DOPPIONE(>200 o <200) direi che devi cambiare la logica degli eventi
    
    (CRITERIO1 OR CRITERIO2) AND (CRITERIO3 OR CRITERIO4)
    P.S. se fai esempi poco coerenti con la realtà rischiamo di fare confusione.
  • Re: Problema Reportistica

    Hai ragione, faccio un pò di chiarezza. Grazie della tua disponibilità intanto.

    resettiamo tutto.

    Ho una tabella Libri, all'interno della quale ho un elenco di libri.
    Collegata a questa tabella ho una tabella Generi.

    Libri (id: contatore e primary key, titolo: string, autore: string, data: date)
    Generi(id: contatore, genere a: logico, genere b: logico, genere c: logico, genere d: logico, genere e: logico, id_libri: foreigh key)
    MascheraLibri: maschera

    Ora, premesso che un libro può avere più generi, vorrei che l'utente potesse visualizzare i titoli dei libri che hanno il proprio genere spuntato nella casella di controllo.

    es:
    GENERE_A
    GENERE_B
    GENERE_C
    GENERE_D
    GENERE_E



    Se io spunto A e B, vorrei che l'utente visualizzasse tutti i libri che hanno TRUE nella tabella generi in genere A e genere B.

    Questa è la query che ho preparato io:

    SELECT libri.titolo
    FROM libri INNER JOIN generi ON libri.ID = generi.id_libri
    WHERE generi.genere_a=Forms!MascheraLibri!CasellaControllo1
    and generi.genere_b=Forms!MascheraLibri!CasellaControllo2
    and generi.genere_c=Forms!MascheraLibri!CasellaControllo3
    and generi.genere_d=Forms!MascheraLibri!CasellaControllo4
    and generi.genere_e=Forms!MascheraLibri!CasellaControllo5;

    il problema è che così facendo, compaiono i libri che hanno true SOLO in genere a e b.
    Se un libro ha true in A B e D ad esempio, questo non viene visualizzato...
    .

    Grazie ancora.
  • Re: Problema Reportistica

    Scusa, non capisco molto di codici, ma a naso mi viene da pensare che anzichè AND, tu debba usare OR.
  • Re: Problema Reportistica

    Ho rilevato una violazione del Regolamento in merito al CROSSPOST, segnalando questa discussione ai Moderatori.

    Per coerenza non parteciperò alla discussione nemmeno in IALWEB.
Devi accedere o registrarti per scrivere nel forum
6 risposte