+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Come estrarre dati da un DB come "totali annui" e "mensili" sulla stessa tabella?

  1. #1
    MarcusMM non è in linea Novello
    Luogo
    Italy
    Post
    43

    Come estrarre dati da un DB come "totali annui" e "mensili" sulla stessa tabella?

    Come da oggetto, avrei una necessità, che, sinceramente, non riesco a risolvere!
    Avendo un database che raccoglie le vendite, vorrei estarre i record in modo che i dati vengano rappresentati con i mesi dell'anno sulle colonne (logicamente la prima colonna elenca gli articoli e l'ultima il totale) e gli articoli sulle righe ... cioè più o meno così:

    Articolo - Gen - Feb - Mar - Apr - ... - Totale
    x
    y
    z

    Non è un problema costruire la query sql per i singoli mesi oppure per il totale, ma come posso fare in modo di mettere tutto insieme?
    ...forse mi sto perdendo in un bicchier d'acqua, ma non ne vengo a capo!
    Grazie comunque in anticipo!

  2. #2
    Post
    4,741
    Blogs
    12
    Ciao MarcusMM,
    Ti scrivo dalla biblioteca universitaria e quindi non ho tempo per ragionarci su. Comunque sto prendendo appunti, spero di risponderti domani sera o al massimo sabato.

    A presto,
    Giuseppe Leone

    P.S.
    Comunque la query non dovrebbe essere molto impegnativa.

  3. #3
    MarcusMM non è in linea Novello
    Luogo
    Italy
    Post
    43
    Grazie Giuseppe!

    ....ci credo che la query non dovrebbe essere molto impegnativa, infatti nel mio post ho scritto che mi sto perdendo in un bicchier d'acqua.
    Purtroppo mi sono infossato su un ragionamento e non mi strigo più le idee.
    ...non so se mi spiego.
    Comunque, ti ringrazio ancora per la tua disponibilità! )

  4. #4
    Post
    4,741
    Blogs
    12
    Scusa marcusMM,
    Vorrei che mi postassi alcuni record di esempio della tabella *incriminata*, cosi' per farmi una migliore idea e non fornirti codice errato.

    Grazie,
    Giuseppe Leone

  5. #5
    MarcusMM non è in linea Novello
    Luogo
    Italy
    Post
    43
    Eccoti un pò di record d'esempio ... non so se così ti possono bastare...

    ID;Data;Articolo;Tons;Valore;
    1;20/02/05;7;1,712;915,92;
    2;22/03/05;7;1,718;919,13;
    3;02/04/05;7;1,714;916,99;
    4;03/04/05;7;1,838;972,67;
    5;05/05/05;7;1,66;870,34;
    6;20/09/05;7;1,668;874,53;
    7;20/09/05;5;0,768;499,2;
    8;20/09/05;5;1,114;757,52;
    9;21/09/05;6;0,526;284,04;
    10;21/09/05;6;0,491;265,14;
    11;03/10/05;7;1,314;525,6;
    12;03/10/05;7;1,412;564,8;
    13;03/10/05;5;1,486;839,59;

  6. #6
    Post
    4,741
    Blogs
    12
    Ciao marcuss,
    Ci sto lavorando, ma una query non sara' sufficiente... Sto creando una pagina ASP, non appena e' pronta ti postero' il codice completo. Sono necesarie un po di righe di codice e sottoquery varie.

    Tra pochi minuti postero' la soluzione

    A presto,
    Giuseppe Leone

  7. #7
    Post
    4,741
    Blogs
    12

    Dopo 2 ore di lavoro...

    Caro marcuss... Mai piu'...
    Ho passato piu' di 2 ore per risolvere questo tuo problema, inizialmente ho pensato che una *buona* query SQL potesse risolvere il tutto, ma poi, dopo una discussione con Maxell1985 ho realizzato che la struttura da te proposta non si poteva ottenere tramite una query ma bensi', con qualche riga di codice in ASP e qualche sottoquery.

    Alla fine, ci sono riuscito, questo e' l'importante:

    Eccoti il tuo codice:

    codice:
    <table width="100%" border="1">
    <%
    'Connessione al database
    set con = server.createobject("ADODB.Connection")
    con.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.mappath("db.mdb")
    
    'Imposto l'anno da visualizzare
    my_year = "2005"
    
    'Adesso seleziono i mesi
    response.write "<tr>"
    response.write "<td>ARTICOLO</td>"
    for i = 1 to 12
    	response.write "<td>" & i & "</td>"
    next
    response.write "<td>TOTALE</td>"
    response.write "</tr>"
    
    'Qui seleziono gli articoli in modo distinto
    strsql = "SELECT DISTINCT articolo FROM tbl_test WHERE YEAR(data) = '" & my_year & "' ORDER BY articolo DESC"
    set rs = con.execute(strsql)
    	while not rs.eof
    		'recupero le variabili
    		articolo = rs("articolo")
    		response.write "<tr>"
    		response.write "<td>" & articolo & "</td>"
    			'Qui selezono i mesi
    			somma_tot = 0
    			for i = 1 to 12
    				strsql = "SELECT SUM(valore) AS somma FROM tbl_test WHERE YEAR(data) = '" & my_year & "' AND MONTH(data) = '" & i & "' AND articolo = '" & articolo & "'"
    				set rs2 = con.execute(strsql)
    				
    				'Recupero la somma per mese per singolo prodotto
    				somma = rs2("somma")
    				if not somma then
    					somma_tot = somma_tot + somma
    					response.write "<td>" & somma & "</td>"
    				else
    					response.write "<td>-</td>"
    				end if
    				
    				rs2.close
    				set rs2 = nothing
    				'Fine somma valori per ogni mese
    			next
    		'visualizzo il totale per prodotto
    		response.write "<td>" & somma_tot & "</td>"
    		response.write "</tr>"
    	rs.movenext
    	wend
    rs.close
    set rs = nothing
    
    'chiudo la connessione
    con.close
    set con = nothing
    %>
    </table>
    Divertiti

    P.S.
    Adesso posso tornare allo sviluppo di MasterDrive.it 2006

  8. #8
    MarcusMM non è in linea Novello
    Luogo
    Italy
    Post
    43
    ...che dire! Non so veramente come ringraziarti!

    Mi spiace che tu abbia perso tutto questo tempo, non era nelle mie intenzioni crearti difficoltà!

    Al di là di tutto, è proprio quello che mi serviva e contemporaneamente mi hai "illuminato" sul come risolvere qualche altra piccola problematica!

    Grazie ancora .... di cuore!

  9. #9
    Post
    4,741
    Blogs
    12
    Di niente Marcus,
    Sono felice che l'esempio proposte abbia potuto *illuminarti* sulla risoluzione di nuovi problemi.

    Al prossimo problema *impossibile*

    A presto,
    Giuseppe Leone

+ Rispondi al Thread

Discussioni simili

  1. Articolo: [Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO)
    Da dragone bianco nel forum Access
    Risposte: 0
    Ultimo Post: 18-05-2006, 20:53
  2. Inserire dati di una maschera in una tabella
    Da gondoliere nel forum Microsoft Office, Access, VBA
    Risposte: 29
    Ultimo Post: 03-03-2006, 15:28
  3. Come inviare dati ad una tabella
    Da Fabivs nel forum Microsoft Office, Access, VBA
    Risposte: 2
    Ultimo Post: 03-01-2006, 20:53
  4. Creazione di una tabella x dati storici
    Da Elimar nel forum Microsoft Office, Access, VBA
    Risposte: 1
    Ultimo Post: 30-06-2005, 17:05

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi