Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

di il
8 risposte

Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

Salve a tutti,
cerco di esporre il mio problema in cerca di un aiuto ...
Dunque ho un database access con tabelle collegate provenienza AS400. Il mio obbiettivo è ottenere una query che filtri gli ordini per sottoclasse merceologica e date delle bolle ( nel file ordini su as ci sono anche gli estremi di bolla e fattura ) per delimitare un periodo temporale e totalizzare i volumi di acquisto per singolo codice articolo. Incrociando poi i dati con i listini mettendo in relazione il campo codice articolo tra la query campi incrociati e la tabella listini quindi una relazione uno a molti ( query con codice totalizzato -> più righe nel listino, una per ogni fornitore) con calcolo della spesa totale del singolo articolo in funzione dei valori di prezzo del listino cosi da capire la economia in termini assoluti sul volume considerato.

Specifico che: non vado diretto sulla tabella ordini in quanto molto pesante e quindi la query a campi incrociati di cui parlavo agisce su una query che limita gli ordini a quello dopo il 2015. poi creo una ulteriore query in cui coinvolgo la query campi incrociati su ordini e la tabella listini. Sulla tabella listini inserisco un parametro per limitare l'analisi alle righe listino con data inizio validità maggiore di una data che inserisco come parametro al lancio della query.
Fin qui tutto funziona. Il passo successivo sarebbe l'utilizzo dell query cosi costruita in un report ( eventualmente da esportare in excell ) oppure collegare la query ad excell ed ottnere una pivot sui dati della query. La strada report crea problemi in quantose seleziono come fonte dati la query con i dati da pubblicare non mi presenta l'elenco campi ( ho provato anche a crear eil report direttamente dal folgio dati delle query ma non funziona) .
Ho provato a generare un report vuoto ed inserire la fonte dati e i campi ma, durante la progettazione del report, mi chiede continuaemnte di inserire i valori dei parametri e quindi rende lo sviluppo impossibile. Inoltre se chiedo di pubblicare il report ( ho fatto una prova inserendo pochi campi giusto per provare ) mi chiede di continuo i parametri. Ingestibile. COn excell invece mi presenta some tabelle /query disponibili solo una parte di quelle contenute nel database e in ogni caso non quella che mi serve.
Scusate se sono stato prolisso.
Stefano

8 Risposte

  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    Leggendo questo
    https://www.iprogrammatori.it/forum-programmazione/access/report-query-campi-incrociati-t17112.html
    si evidenzia il problema insito della costruzione di un report su query a campi incrociati.
  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    Ho letto il caso proposto. NEl report che avevo pensato, proprio perchè avevo già considerato questo aspetto, intendevo fare riferimento a un campo che totalizza le quantità, al di là del periodo in esame ( se metto date, ad esempio, tra inizio 2020 e oggi mi genera ti totali per anno e quindi nel caso avrei due colonne mentre se prendo in esame un solo anno ho una sola colonna anno ). Riferendo nel report il nome del campo ( totperiodo) questo dovrebbe essere sempre presente e quindi il problema di quante colonne ha la query non dovrebbe importare ( sbaglio?).
    Il problema vero e che nella progettazione quando si inseriscono i controlli chiede di continuo di inserire i parametri e questo rende il lavoro ingestibile.
    Potrei risolvere colegando un excell esterno ove mettere le parte di analisi ma non vedo da excell la query che mi interessa.....
  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    Senza vedere nomi propri di campi e query non riesco a inquadrare lo scenario nella sua completezza. Tieni anche presente che query con troppi calcoli e query a campi incrociati non sono proprio il mio forte. Ma mi soggiunge un'altra idea. Tieniti la query a campi incrociati. Crea una nuova query che preleva dati dalla query a campi incrociati e mostra solo le colonne che devono essere visualizzate nel futuro report. Poi fai poggiare il tuo report su quest'ultima query.
  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    Intanto grazier dell'aiuto.
    Il problema della query a campi incrociati e che essendo parametrica ( filtro per classe merceologica e date ) se la richiamo da un'altra query parte comunque la richiesta dei parametri. Se mi spieghi come si faà allego una slide tanto non c'è nulla di segreto...
  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    Ovvio. Forse non ho capito io dal primo post. Cosa vuoi ottenere passo passo? Dovresti raccontare tutto con i nomi propri oppure alleghi qualche immagine del tuo lavoro fin qui svolto.
  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    Foese sarebbe più semplice se postassi un esempio di ciò che hai realizzato in modo da potersi rendere conto direttamente dei prblemi in quanto dalla tua spiegazione non si capisce molto.
  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    La butto li

    Provare a creare una tabella temporanea dove aggiungi dinamicamente le colonne che ti servono da codice sfruttando la proprietà del recordset .fields.count per sapere quanti campi aggiungere.

    una cosa tipo questa
       
                Dim tdf As DAO.TableDef
                Dim qdf As DAO.QueryDef
        	    Dim rst As DAO.Recordset
        	    dim RstOutput  As DAO.Recordset
        	    dim i as integer
        	    
       	    Set qdf = db.QueryDefs("Nome query a campi incrociati")		' Apri il recordset della query passandogli i relativi parametri
                qdf.Parameters("parametro1") = xxxx
                qdf.Parameters("parametro2") = yyyy
                ....
                qdf.Parameters("parametron") = nnn
    
                Set rst = qdf.OpenRecordset(dbOpenSnapshot)
                
                Set tdf = CurrentDb.CreateTableDef("Nome tabella")			' Crei la nuova tabella
                for i=1 to rst.fileds.count
    		tdf.Fields.Append .CreateField("Campo"&i, dbText)            	' Aggiungi i campi necessari
    	    next i
    	    set RstOutput = currentdb.openrecordset("Nome tabella",dbopendynaset)		' Apri un recordset sulla tabella appena creata
    	    rst.movefirst
    	    do until rst.eof
    	    	 RstOutput .addnew
    	    	 for i=1 to rst.fileds.count			' Ciclo per riempire la tabella (non so se ci va .value non ricordo)
    	    	 	rstoutput(i)=rst(i)
    	    	 next i
    	    	 rstoutput.update
    	    	 rst.movenext
    	   loop 	            		
    
    Non so se potrebbe funzionare con una query a campi incrociati (non ho provato) ma se funziona alla fine dovresti avere la tabella pronta per essere esportata su excel

    PS il codice l'ho scritto di getto giusto per illustrare l'idea
  • Re: Query campi incrociati utilizzata in altra query per report listini o connessione ad excell per analisi dati

    OsvaldoLaviosa ha scritto:


    Ovvio. Forse non ho capito io dal primo post. Cosa vuoi ottenere passo passo? Dovresti raccontare tutto con i nomi propri oppure alleghi qualche immagine del tuo lavoro fin qui svolto.
    PEr allegare immagini sui messaggi come posso fare?
    Avevo anche pensato di mettere mano al codice, forse soluzione più controllabile e scalabile; è il tempo che un pò manca.
    Comuqnue grazie dell'interessamento.
    Appena possibile inserisco maggiori dati
Devi accedere o registrarti per scrivere nel forum
8 risposte