Access: Stampare in un report tutti i check non flaggati

di il
9 risposte

Access: Stampare in un report tutti i check non flaggati

Salve a tutti. Sono nuovo nel forum e prima di venire qui ho cercato in rete il problema che ho col DB; ho visto diversi video, letto diverse pagine anche su microsoft access però non riesco, nel mio caso specifico, a risolvere il problema.

Quindi:

Ho 2 tabelle: una tabAnagrafica e l'altra tabPagamenti (in quest'ultima ho un campo chiamato Pagato che è un SI/NO.)

Ho creato 2 maschere per l'immissione dei dati una, appunto, AnagraficaM e l'altra PagamentiM che in realtà usa un campo cerca Cliente che va nella tabAnagrafica, cliccando sul Bottone Cerca mostra i dati del Cliente e quindi mi rende Visibile una sottomaschera nella quale inserisco i pagamenti delle fatture effettuate. Flaggo o meno il campo Pagato quando ho ricevuto i soldi. Fin qui niente di particolare. Tutto funziona perfettamente.

Il problema nasce con il report Pagamenti. Ho necessità di avere nel report solo esclusivamente la lista delle fatture non ancora pagate.

Innanzitutto ho creato una query della tabAnagrafica e tabPagamenti scegliendo i campi: Cognome - Nome - nrFatt - Importo - Pagato. Nel campo Pagato in Criteri ho inserito Like Falso.

Bene, quando faccio il report mi da in effetti i campi non flaggati ma la cosa che mi lascia sorpreso e che se ho dello stesso Cliente 3 fatture non pagate lui mi stampa nel report una sola.

Non ho trovato nessun video che mi spieghi dove sta l'errore. 

Ho provato anche a fare un'altra cosa. In un campo vuoto della query ho fatto questa prova:

X:IIF([Pagato]=Falso;"Pagato";"Non Pagato")

accetta il codice ma mi riporta un #error e non so perché, in teoria dovrebbe funzionare. L'idea era di mettere in Criteri Like “Non Pagato” e in Ordinamento Crescente; forse così avrei potuto risolvere ma con quell'errore non ho potuto provarlo.

Comunque la cosa che mi preme e capire dove sbaglio per far stampare nel report tutte le voci Falso dello stesso Cliente.

Grazie per un qualsiasi aiuto

Precius

9 Risposte

  • Re: Access: Stampare in un report tutti i check non flaggati

    Dico una cosa banale. Sei sicuro il tipo dato nel campo [Pagato] sia boolean?

  • Re: Access: Stampare in un report tutti i check non flaggati

    Ciao Antony73

    Se intendi Formato = SI/NO, si sono sicuro.

    Posso scegliere Vero/Falso - Si/No e l'altro. Quindi si è boolean

  • Re: Access: Stampare in un report tutti i check non flaggati

    06/09/2023 - Precius ha scritto:


    Comunque la cosa che mi preme e capire dove sbaglio per far stampare nel report tutte le voci Falso dello stesso Cliente.

    Ciao,

    Come viene impostato il flag ? 

    Accetta valori Null, True e False?

    Non conoscendo la struttura del tuo Db e delle tabelle in questione, la prima cosa che mi verrebbe in mente è quella di verificare se il campo flag può o meno assumere il valore Null.

    In tal caso dovresti definire tale colonna nella struttura della tabella con un valore di Default = False (oppure No … a tuo piacimento) e che possa accettare solo valori False o True ( oppure Si o No) 

    A questo punto non devi assolutamente riscontrare nessun problema nel testare il Flag. 

    Una cosa che non capisco è perchè usi il Like come espressione di confronto… è sufficiente testare il flag = False (oppure = No) 

  • Re: Access: Stampare in un report tutti i check non flaggati

    Ciao By65Franco

    Si, nella descrizione inziale del post non ho scritto che avevo provato anche solo Falso e “NO”, ma niente non funziona.

    questo è quello  che ho nella scheda pagamenti

     e questo quello che vedo nel report

    Nella query è settato così

    Niente proprio non vuole mostrarmi i due importi non pagati

  • Re: Access: Stampare in un report tutti i check non flaggati

    06/09/2023 - Precius ha scritto:


    Innanzitutto ho creato una query della tabAnagrafica e tabPagamenti scegliendo i campi: Cognome - Nome - nrFatt - Importo - Pagato. Nel campo Pagato in Criteri ho inserito Like Falso.

    Utilizzare il like su un campo boolean non mi era ancora capitato di sentirlo (peraltro direi che è anche sintatticamente sbagliato)

    Un campo boolean (in Access) vale nativamente 0 (=False), -1 (=True) oppure Null (se è accettato come valore).

    Falso/Vero/Sì/No sono tutte facilitazioni grafiche (della versione in Italiano) che possono poi confondere gli (in)esperti di SQL.

    Se scrivi la query utilizzando il QBE certamente puoi scrivere Falso/vero etc … ma puoi anche scrivere =0 oppure oppure =-1.

    Ti invito comuqnue a guardare la query scritta tramite QBE come diventa nel linguaggio SQL

    X:IIF([Pagato]=Falso;"Pagato";"Non Pagato")

    Scrivilo così :

    X:IIF([Pagato];"Pagato";"Non Pagato")

    Oppure se preferisci ragionare al contrario :

    X:IIF(NOT [Pagato];"Non Pagato";"Pagato")

    Infine : la programmazione si basa sulla lingua Inglese … quindi True/False e non Vero/Falso (ma purtroppo mi rendo conto che questo è un approccio forviante di Access).

  • Re: Access: Stampare in un report tutti i check non flaggati

    06/09/2023 - max.riservo ha scritto:


    Infine : la programmazione si basa sulla lingua Inglese … quindi True/False e non Vero/Falso (ma purtroppo mi rendo conto che questo è un approccio forviante di Access).

    Bravo !!! è proprio così …. poi quando appunto si va sulle stringhe sql i nodi vengono al pettine ;-) )
    Ottima osservazione.

    06/09/2023 - Precius ha scritto:


    Niente proprio non vuole mostrarmi i due importi non pagati

    Un pò difficile così capire se il problema è legato ai valori Null oppure a selezioni e raggruppamenti che potresti avere nel report o nella query.

    Comunque vai per esclusione e a partire dalla query verifica i dati che ti vengono esposti.

    per esempio: 

    • seleziona nella query solo un cliente per il quale hai più records di “non pagato”
    • verifica nel campo booleano che valori hai e se ti fa vedere tutti i records sia con il Pagato = True che i non Pagato = False
    • se vedi tutti i records a questo punto prova semplicemente a selezionare tutti i records che nella colonna Pagato sono <> True ( oppure <> da Vero)
    • poi fai la stessa cosa impostando il confronto nei criteri con = False (oppure = Flaso) 

    a questo punto vedi in questi due casi cosa ti restituisce la query e questo già ti permette di capire se hai nella colonna Pagato dei valori Null oppure no e che comunque sarebbero ben visibili.


    Se la query restituisce i dati corretti allora devi verificare come hai impostato il report.

  • Re: Access: Stampare in un report tutti i check non flaggati

    Ciao max.riservo intanto grazie.

    Si guarda su Vero/Falso e True/False lo so per altre cose che faccio con python, 

    Ho usato Falso perché ho notato che nella versione di Access italiana appena ho scritto False me l'ha trasformata in Falso. Quindi mi sono adattato.

    Per quanto riguarda il LIKE come ho spiegato è stata una prova dato che con “Falso” non sortivo nessun effetto.

    Con X:IIF([Pagato];"Pagato";"Non Pagato") ho risolto. 

    Quindi era usare [Pagato]=Falso il problema?

    Ho visto dei video dove la stringa era così e ti dico che ho provato sia Falso che False e non funzionava. 

    Comunque grazie ancora, un problema in meno

    Saluti a tutti

  • Re: Access: Stampare in un report tutti i check non flaggati

    06/09/2023 - Precius ha scritto:


    Con X:IIF([Pagato];"Pagato";"Non Pagato") ho risolto. 

    Quindi era usare [Pagato]=Falso il problema?

    Evidentemente era lì il problema.

    Se hai letto quello che ho scritto avrai notato come io ho scritto il test per falso :

    X:IIF(NOT [Pagato];"Non Pagato";"Pagato")
  • Re: Access: Stampare in un report tutti i check non flaggati

    Si max.riservo lo avevo visto ma a me, devo dire la verità, la formula NOT mi ha sempre infastidito. Preferisco l'altra versione.

    CMQ alla fine ho capito perché non mi stampava il corretto risultato. Avevo fatto un taglia e copia dal Corpo all'intestazione (intendo le intestazioni di Ordinamento che il report ti propone) quindi naturalmente la vedeva come intestazione. Mi sono reso conto lavorandoci su un report non modificato che uscivano tutte quelle con False.

    In ogni caso grazie perché adesso ho visto come scrivere la formula IIF nel modo corretto, mi servirà sicuramente presto.

Devi accedere o registrarti per scrivere nel forum
9 risposte