Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209

    [ACCESS] Totali su righe e colonne in una query a campi incrociati

    Ciao a tutti.
    Sto utilizzando Access per la prima volta.
    Devo creare una maschera riepilogativa che deve mostrarmi sulle righe le scadenze e sulle colonne i fornitori. L'incrocio di ogni riga/colonna rappresenta un valore di fattura.

    Fin qui tutto facile. Creo la query e riesco ad impostare il totale per riga.
    Mentre invece non riesco a creare il totale per la colonna!

    Qualcuno sa spiegarmi come?

    Grazie mille!

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Devi ricorrere a un trucchetto,

    I totali del periodo te li fa gia la quert a campi incrociati, ( Chiamiamola " Qz4CI " )

    Ti mancano i totali di Fornitore che te li devi gia preparare nella query
    di origine ( Chiamiamola " Qz4 " ) della successiva a campi incrociati

    Significa che la Qz4 deve essere una query di unione
    fra la tua attuale query e una nuova query raggruppata
    x fornitori.
    __________________________________________________ __________

    Ti faccio un esempio semplice

    Hai la tabelle " FATTURE "
    Id _____ Contatore ___ Key
    Scad ___ Testo
    Forn ___ Testo
    Impo ___ Numerico

    __________________________________________________ ______

    Crei una prima queri di unione con nome "Qz4"
    codice:
    SELECT 
    
    "p" AS ord, 
    FATTURE.Scad, 
    FATTURE.Forn, 
    FATTURE.Impo
    
    FROM FATTURE
    
    UNION ALL 
    
    SELECT 
    
    "t" AS ord, 
    "TotFor" AS Scad, 
    FATTURE.Forn, 
    Sum(FATTURE.Impo) AS SImpo
    
    FROM FATTURE
    
    GROUP BY "t", "TotFor", FATTURE.Forn
    
    ;
    __________________________________________________ ____________

    Poi su " Qz4 " crei al tua " Qz4CI "
    codice:
    TRANSFORM 
    Sum(Qz4.Impo) AS SommaDiImp 
    
    SELECT 
    
    Qz4.ord, 
    Qz4.Scad, 
    Sum(Qz4.Impo) AS TotImpo
    
    FROM Qz4
    
    GROUP BY Qz4.ord, Qz4.Scad
    
    PIVOT Qz4.Forn
    ;

    E tutto

    Saluti

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Ciao, grazie mille per la risposta.
    Solo ora mi sono reso conto di essere stato molto marginale...

    Allora io ho due tabelle
    ATTIVITA_FORNITORI (che registra tutte le fatture):
    ID,
    DATA_EMISSIONE,
    NUMERO_FATTURA,
    idFornitore,
    IMPORTO,
    SCADENZA,
    PAGATO

    FORNITORI (in cui registro i fornitori):
    idFornitore,
    nomeFornitore

    Vi è una relazione tra le due tabelle sui campi idFornitore.

    Da qui ho modificato il tuo codice, tra l'altro no nci sarei mai arrivato senza il tuo aiuto, in questo modo:

    codice:
    SELECT 
    
    "p" AS ord, 
    ATTIVTA_FORNITORI.SCADENZA, 
    ATTIVITA_FORNITORI.IMPORTO, 
    FORNITORI.nomeFornitore
    FROM ATTIVITA_FORNITORI INNER JOIN FORNITORI ON ATTIVITA_FORNITORI.idFornitore = FORNITORI.idfornitore
    
    UNION ALL 
    
    SELECT 
    
    "t" AS ord, 
    "TotFor" AS Scad, 
    Sum(ATTIVITA_FORNITORI.IMPORTO) AS SImpo,
    FORNITORI.nomeFornitore
    FROM ATTIVITA_FORNITORI INNER JOIN FORNITORI ON ATTIVITA_FORNITORI.idFornitore = FORNITORI.idfornitore
    
    
    GROUP BY "t", "TotFor", FORNITORI.nomeFornitore;
    E la seconda:
    codice:
    TRANSFORM 
    Sum(Qz4.IMPORTO) AS SommaDiImp 
    
    SELECT 
    
    Qz4.ord, 
    Qz4.Scad, 
    Sum(Qz4.IMPORTO) AS TotImpo
    
    FROM Qz4
    
    GROUP BY Qz4.ord, Qz4.Scad
    
    PIVOT Qz4.Form;
    Solo che quando cerco di eseguire la seconda query mi esce:
    codice:
    Il modulo di gestione Database di Microsoft Office Access non riconosce 'ATTIVITA_FORNITORI.SCADENZA' come nome campo o espressione valida
    Perchè?

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Hai scritto : ATTIVTA_FORNITORI.SCADENZA, senza la " I "
    __________________________________________________ ____________
    Poi devi inserire l' ID fornitore per metterti al sucuro
    da eventuali omonimie di fornitori
    __________________________________________________ _____________

    Alla fine la prima query ( Qz4 ) potrebbe essere:
    codice:
    SELECT 
    
    "p" AS ord, 
    ATTIVITA_FORNITORI.SCADENZA, 
    FORNITORI!nomeFornitore & "__" & FORNITORI!idFornitore AS Forn,  
    ATTIVITA_FORNITORI.IMPORTO
    
    FROM 
    
    FORNITORI INNER JOIN ATTIVITA_FORNITORI ON FORNITORI.idFornitore = ATTIVITA_FORNITORI.idFornitore
    
    UNION ALL 
    
    SELECT 
    
    "t" AS ord, 
    "Totale" AS SCADENZA, 
    FORNITORI!nomeFornitore & "__" & FORNITORI!idFornitore AS Forn,  
    Sum(ATTIVITA_FORNITORI.IMPORTO) AS SommaDiIMPORTO
    
    FROM 
    
    FORNITORI INNER JOIN ATTIVITA_FORNITORI ON FORNITORI.idFornitore = ATTIVITA_FORNITORI.idFornitore
    
    GROUP BY "t", "Totale", "", FORNITORI!nomeFornitore & "__" & FORNITORI!idFornitore
    
    ;
    Mentre ( Qz4CI ) la seconda query è

    codice:
    TRANSFORM 
    
    Sum(Qz4.IMPORTO) AS SImp
    
    SELECT 
    
    Qz4.ord, 
    Qz4.SCADENZA, 
    Sum(Qz4.IMPORTO) AS Importo
    
    FROM Qz4
    
    GROUP BY Qz4.ord, Qz4.SCADENZA
    
    PIVOT Qz4.Forn
    
    ;
    __________________________________________________ __________________

    Se preferisci i totali in testa in Qz4 scrivi "t" al posto di "p"
    e viceversa
    __________________________________________________ ________________

    Se poi vuoi addensare Qz4 e Qz4CI in una unica qyery:

    vai in Qz4CI

    al posto di " FROM Qz4 " scrivi:

    FROM
    (
    "Il testo di Qz4
    senza il ; finale "
    ) AS Qz4


    __________________________________________________ __________________


    Saluti

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Quell'errore lì l'avevo già trovato. Ma l'errore rimane....
    Grazie mille provo e ti faccio sapere!

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Grazie mille funziona!!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Scusa una curiosità...
    ma il comando finale
    codice:
    PIVOT Qz4.Form;
    Cosa significa? che deve crearmi una maschera Pivot?
    Perchè a me crea solo un foglio dati.

    E poi un altra cosetta....
    Queste query mi servono per creare poi un report di riepilogo.
    Il problema che sto riscontrando è quello che se io faccio il report ora e poi dopo averlo creato inserisco un nuovo cliente, il report continua solo a farmi vedere i clienti inseriti precedentemente alla creazione del report.
    C'è un sistema dinamico per permettere la creazione dei report sempre aggiornati?
    Grazie mille per le risposte.

  8. #8
    Benché la discussione stia andando avanti da giorni ........

    Non è questa la sezione adatta dove discuterne!!!!!

    Gentilmente riapri il thread nella sezione corretta e soprattutto rileggi il regolamento!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.