Report

di il
19 risposte

Report

Ho più volte espresso questo mio problema nel creare questo report. Mi potete aiutare:

Io ho due tabelle con questi:
1°tabella utente
idu
Nome
cognome
2° tabella rimborso
idr
Descrizione
Spesa
TipoS
Datas
idu

nel tipo di spesa sono "contanti;assegno;etc.

Query (ricerca tra date)
nome;cognome;descrizione;spesa;tipos;datas.

Report
nome;cognome;descrizione;spesa;tipos;datas.
piedPag.
Totale per contanti
Totale per Assegno

Cosa mi consigliate, Grazie

19 Risposte

  • Re: Report

    Il report dovrebbe poggiare sulla query. Se fai la procedura guidata di creazione report, ti accorgerai che viene chiesto se vuoi creare livelli gerarchici. Quindi stabilisci che i campi relativi a Utente siano disposti in alto, mentre la lista dei Rimborsi deve apparire in verticale sotto. Fin qui stiamo parlando di un report abbastanza standard. Riguardo ai due totali devi creare (in visualizzazione struttura report) 2 "casella di testo" (non associata) dove dentro devi scriverci opportune espressioni, con opportuni filtri, che calcolano quello che hai chiesto: qui occorre conoscere un po' di sintassi di espressioni...puoi trovare molti thread e suggerimenti sulla guida in linea al riguardo.
  • Re: Report

    Il mi problema non è creare il report, sono le sintassi che mi creano il problema.
    Se mi puoi evidenziare un esempio ti sarei grato.
  • Re: Report

    Non capisco il tuo problema... sintassi di cosa...? Per il TOTALE...?

    Se crei il REPORT con i GRUPPI(Contanti/Assegni ma in realtà Gruppo per Campo TipoPagamento) in modo corretto ed inserisci nel PieDiPaginaGruppo una TextBox ce Somma gli importi non hai molto da sbagliare...!
    Se questo non è il tuo scenario invece è bene tu ci definisca come stai lavorando, in quanto potrebbe, contrariamente a quanto potresti pensare, rappresentare il problema per il quale non ti tornano i valori...
  • Re: Report

    Il report che io voglio creare è questo:

    Rimborso spesa dal 01.02.2014 al 31.03.2014
    Nome Data Spesa Tipo Spesa Importo
    Lino 12.02.2014 Contanti €12,00
    Lino 11.03.2014 Assegno €150,00
    Lino 11.03.2014 Contanti €11,00

    Totale contanti € 22,00 Totale assegni € 150,00

    Se io metto la somma del campo "Importo" lui mi da il totale di tutti gli importo € 172,00
    Se invece io metto Dsum "Contanti" della tabella Rimborso lui mi da la somma di tutte le spese che io ho registrato in tutte le date come contanti.

    Ho dato l'idea del mio problema.

    Grazie
  • Re: Report

    Quello che ho cercato di spiegarti, è che se tu sfruttassi lo STANDARD di Access otterresti questo:
    
    Rimborso spesa dal 01.02.2014 al 31.03.2014
    Nome Data Spesa Tipo Spesa Importo
    SPESA CONTANTI
    Lino 12.02.2014 €12,00
    Lino 11.03.2014 €11,00
    ------------------------------------------
    Totale contanti € 22,00
    
    SPESA ASSEGNO
    Lino 11.03.2014 €150,00
    ------------------------------------------
    Totale assegni € 150,00
    Questo senza 1 riga di codice...

    Ora se questo non ti va bene, è normale che DSUM deve riportare i 2 CRITERI atti a discriminare le spese che sono il PERIODO(Dal÷Al) ed il TIPOSPESA in AND LOGICO...!

    Quindi
    
    TotContanti=DSUM("Spesa","NomeTabella","(Data Between .... AND ....) AND TipoSpesa='Contanti')
    TotAssegni=DSUM("Spesa","NomeTabella","(Data Between .... AND ....) AND TipoSpesa='Assegni')
  • Re: Report

    Ho provato a fare come mi hai detto ma mi da errore:
    =DSum([Importo];[Rimborso];[>=[forms]![Intervallo date report]![DataInizio] and <=[forms]![Intervallo date report]![DataFine]];[TipoS=Vitto])
    ma mi da errore Errore di sintassi nell'espressione, è possibile che sia stata immessa una virgola non proceduta da un valore o da un identificatore.

    Non riesco dove sbaglio
  • Re: Report

    Non ho seguito la logica di tutto il discorso, ma DSum prevede le virgolette doppie su tutti i suoi argomenti. Leggi bene la guida in linea.
  • Re: Report

    mlino ha scritto:


    Ho provato a fare come mi hai detto ma mi da errore:
    =DSum([Importo];[Rimborso];[>=[forms]![Intervallo date report]![DataInizio] and <=[forms]![Intervallo date report]![DataFine]];[TipoS=Vitto])
    ma mi da errore Errore di sintassi nell'espressione, è possibile che sia stata immessa una virgola non proceduta da un valore o da un identificatore.

    Non riesco dove sbaglio
    Se hai messo questa espressione nell'Origine Controllo della TextBox credo che ci sia una serie di errori macroscopici:
    1) quella parentesi QUADRA dopo [Rimborso]
    2) l'assenza del Campo a cui applicare il criterio
    3) il criterio è scritto male...([A]>xx AND [A]<yy) come vedi il campo [A] deve essere esplicitato 2 volte, a meno di non usare Between... ma la sintassi è diversa

    Se invece hai scritto codice VBA, come ti avevo suggerito io, oltre a tutti gli errori che già ti ho segnalato, c'è che hai usato il [;] al posto della [,]
  • Re: Report

    OsvaldoLaviosa ha scritto:


    Non ho seguito la logica di tutto il discorso, ma DSum prevede le virgolette doppie su tutti i suoi argomenti. Leggi bene la guida in linea.
    Osvaldo, quello che dici sarebbe vero se, come vedi nel mio esempio, fosse inserito il tutto nel VBA, anche la guida infatti espone un esempio che viene gestito in VBA.
    Nel caso si faccia come probabilmente ha fatto lui, quindi dal Generatore di espressioni nelle proprietà del Controllo(avvallato dal [;] al posto della [,]) le virgolette non devono assolutamente esserci, se non per distinguere il DataType Testo...
  • Re: Report

    Nella query dove c'è il campo data ho inserito questo criterio:
    >=[forms]![Intervallo date report]![DataInizio] and <=[forms]![Intervallo date report]![DataFine]
    quindi quando apro il file report mi compare una maschera per inserire la data.

    Io non ho utilizzato il comando Between.

    Quindi per risolvere questo problema cosa devo fare, Grazie
  • Re: Report

    Ho risolto così:
    =DSum("Importo";"Rimborso";"Data Between[forms]![Intervallo date report]![DataInizio] and [forms]![Intervallo date report]![DataFine]And TipoS='Vitto'")
    
    Così mi sta funzionando.
    Grazie ad @Alex che mi ha consigliati il percorso giusto
  • Re: Report

    Mi voglio ancora complicare la vita, se io inserisco nella query, oltre al criterio di ricerca tra data inizio e data fine, nel campo cognome il creterio di ricerca Like [Cognome] & "*"

    Avviando il report mi fa la ricerca fra date e anche il cognome ma le varie somme in questo caso non sono separate per cognome.
    Mi spiego meglio se Tizio per Vitto aveva speso € 10,00 e caio aveva speso € 15,00
    il report è la somma di € 25,00, pur facendo il filtro come cognome.

    Su questa riga di comando dove devo inserire il comando LIKE
    =DSum("Importo";"Rimborso";"Data Between[forms]![Intervallo date report]![DataInizio] and [forms]![Intervallo date report]![DataFine]And TipoS='Vitto'")
    
    Grazie
  • Re: Report

    L'espressione DSum la lasci così come è. Per mettere in funziona il Like che hai predisposto tu, vai in visualizzazione struttura query e scrivi quella espressione in corrispondenza di Criterio al campo Cognome-Nome...non so come lo hai predisposto.
  • Re: Report

    Forse non hai capito bene il mio problema.
    Io ho già inserito nella query il comando like sul cognome e mi funziona.
    Il mio problema e che nel report dove è inserito il comando dsum mi da il totale non con il filtro del cognome ma il totale generale.
Devi accedere o registrarti per scrivere nel forum
19 risposte