Report che filtra i valori da vedere

di il
7 risposte

Report che filtra i valori da vedere

Buon giorno,
quest'oggi vorrei se possibile chiedere una cosa sui report. Nel mio report ho una singola casella combinata che mi mostra un valore numerico presente nella query collegata al report. Il mio scopo sarebbe quello di filtrare i record da visualizzare nel report, a seconda del valore della suddetta casella combinata. Per esempio, se la casella combinata mostra il valore di 1000, allora devo visualizzare solo i record che hanno il numero 2017 nel campo Anno. Ovviamenti tali record derivano vengono pescati dalla query collegata al report.
Esistono strumenti di access o codici che risolvono questo problema ?

Vi ringrazio molto per l'attenzione ricevuta

Jibi

7 Risposte

  • Re: Report che filtra i valori da vedere

    I Report sono fatti per STAMPARE non per interagire con l'utente... anche la scelta di mettere una ComboBox in un Report è quanto mai ASSURDA.
    Se devi stampare una determinata lista di dati(FILTRATA) devi predisporre l'interfaccia di SELEZIONE in una Maschera, da cui poi stampi il Report Filtrato.
  • Re: Report che filtra i valori da vedere

    Ok, perfetto, cmq mi rendo conto di avere sbagliato a scrivere, perdono.. non volevo scrivere "casella combinata" ma solo "casella".
    In realtà ho fatto esattamente come dici, ho fatto una maschera in cui tramite caselle combinate e pulsanti con opzioni varie, l'utente stabilisce quali record vedere nel report. Però, lo dico sinceramente, una volta fatta tale maschera non sapevo come sfruttarla per far sì che nel report venissero visualizzati certi record...

    (LEGGERE QUESTA PARTE SOLO SE SI è INTERESSATI A CAPIRE IL MIO RAGIONAMENTO, SE NO SALTARE)
    allora ho visto bene di aggirare l'ostacolo in questo modo malsano e sicuramente scorretto: per ogni valore di ogni casella combinata ho creato un campo calcolato che mi associasse un numero (es. casella combinata in cui si sceglie una persona tra Carlo, Lucia e Giacomo... se scegli Giacomo, allora un campo calcolato mi restituisce il valore 3, per esempio).... poi c'è un campo calcolato che somma tutti i campi calcolati. Alla fine, di tutte le scelte operate nella maschera, io ho un unico valore (es. 2030307), univoco, che mi significa esattamente quello che voglio (il 2 in cima significa che ho scelto l'anno 2017, il 7 in fondo, che ho scelto Giacomo ecc...). Poi tramite una serie di IF "ad albero" volevo inserire dei codice sul report che mi rendessero i record in base al numerone finale che viene fuori . (FINE DELLA PARTE)

    Sono molto interessato a quanto hai detto, sai per caso dove potrei trovare una guida? o qualche indicazione... perchè vorrei imparare a sfruttare al meglio le caselle combinate.
    Grazie mille per il tuo, sempre, preziosissimo aiuto

    Jibi
  • Re: Report che filtra i valori da vedere

    La funzione OPENREPORT supporta il Parametro WHERE che è estattamente la WHERE CONDITION che ti serve.
    E' evidente che devi comporre il Criterio in base alle selezioni che hai fatto con la sintassi corretta... ma quella è la strada.
    Vedi questi Esempi:
    https://www.techonthenet.com/access/reports/filter_rpt.php

    Credo che la Guida INLINEA sia la cosa migliore, ma prima devi avere un po di basi sul prodotto, quindi un buon testo lo puoi trovare nella recensione in CALCE sui Libri.
  • Re: Report che filtra i valori da vedere

    Grazie mille, gentilissimo e preciso come sempre.

    Jibi
  • Re: Report che filtra i valori da vedere

    Ho guardato il sito che mi hai indicato e spero di aver fatto dei passi avanti.
    Alla maschera con la casella combinata ho inserito un pulsante, che se cliccato parte tale codice:
    Private Sub Comando30_Click()
    DoCmd.OpenReport "Libri", acViewReport, , "Titolo = " & CasellaCombinata1
    End Sub
    Lo scopo è quello di far apparire nel report solo i record in cui nel titolo è contenuta la parola scelta nella casella combinata (che si trova nella maschera). "Titolo" è un campo appartenente al report (omonimo della tabella da cui pesca). CasellaCombinata è presente solo nella maschera.
    Il codice non funziona, o meglio, non restituisce errore, ma non mi apre il report non facendomi vedere nessun record...

    Ho provato anche con questo codice:
    Private Sub Comando30_Click()
    DoCmd.OpenReport "Libri", acViewReport, , "Titolo" = "CasellaCombinata1"
    End Sub
    Nulla da fare, stesso risultato. Ho paura di aver sbagliato a scriverlo, ma non capisco dove ho sbagliato.
    Mi scuso per l'incompetenza
  • Re: Report che filtra i valori da vedere

    Credo tu commetta molti errori soprattutto concettuali.
    Una Combo solitamente non si sfrutta per la parte TESTUALE, ma perchè è legata ad una Tabella con un Campo ID(Chiave) ed uno o più Campi Testo descrittivi...!
    Quindi si visualizza la parte Descrittiva ma si fa riferimento alla parte Relazionale o alla colonna della Chiave.
    Quindi se cerchi un Libro per il Titolo, in realtà il TITOLO esatto deve avere un riferimento al campo Chiave primaria già definito, quindi non cerchi per Titolo ma per ID.
    Si cerca per TITOLO se e solo se devi effettuare una ricerca parziale... ovvero per PAROLE singole da ricercare all'interno del titolo.

    Quindi se devi selezionare un Item dalla Combo che rappresenta un Testo mi viene da pensare che in realtà dovrebbe essere legato ad un INDICE... e se così non è forse qualche cosa su cui riflettere c'è...

    In ogni caso, nel tuo esempio non funziona per il motivo che la Sintassi del Filtro va differenziata a seconda del Tipo di Dato... nel tuo caso essendo testo e non Numero servono gli APICETTI, ma devi anche far attenzione agli Apostrofi.

    Così dovrebbe andare meglio
    
    Private Sub Comando30_Click()
    DoCmd.OpenReport "Libri", acViewReport, , "Titolo = '" & REPLACE(CasellaCombinata1,"'","''") & "'"
    End Sub
  • Re: Report che filtra i valori da vedere

    Giustissimo e chiarissimo.
    Immensamente grazie per il tuo aiuto formidabile

    Jibi
Devi accedere o registrarti per scrivere nel forum
7 risposte