Errore su report per campo non riconosciuto

di il
7 risposte

Errore su report per campo non riconosciuto

Buongiorno a tutti,
dopo averlo più volte consultato è la prima volta che accedo attivamente al forum, ed è per chiedere qualcosa di probabilmente banale (mia ignoranza) e che fin'ora ho risolto in modo 'artigianale' e che non mi soddisfa.
Per ragioni grafiche e di facilità di consultazione ho costruito un db access che via odbc pesca i dati dal gestionale aziendale (sap b1). Dalla tabella fatturato vendite (ma vale anche per gli altri dati, es. acquisti) ho creato una query a campi incrociati che mi presenta per mese (mese quindi come intestazione colonna) i valori del fatturato, ad esempio per cliente (quindi cliente come intestazione riga). A livello di query tutto funziona, quindi se lancio la query in questo preciso momento ho tutti i fatturati cliente mese per mese fino a novembre. Il problema è che voglio utilizzare un report appoggiato su tale query, report che già contiene i campi dei dodici mesi dell'anno, ma ovviamente se lo lancio ricevo un errore di campo (dicembre in questo caso) non riconosciuto. In effetti non essendoci ancora fatture di vendita su dicembre, nella query la colonna dicembre non esiste ancora e il relativo report va in errore.
Il modo artigianale con cui ho finora risolto è quello di accodare dei record di un cliente fittizio con fatturato 0,00001 per i dodici mesi in modo tale che nella query ci siano sempre le colonne dei dodici mesi presenti.
E' chiaro che se volessi ad esempio avere l'andamento del fatturato per articolo dovrei in modo analogo creare un articolo fittizio con un fatturato di 0,00001 per ciascun mese, e così via.
La domanda è se vi è un modo migliore per gestire il problema o, in alternativa, se è possibile ignorare l'errore e fare in modo che il report esca comunque.
Ringrazio fin da ora chiunque volesse intervenire su questo argomento.
Claudio.

7 Risposte

  • Re: Errore su report per campo non riconosciuto

    joke99 ha scritto:


    Il problema è che voglio utilizzare un report appoggiato su tale query, report che già contiene i campi dei dodici mesi dell'anno, ma ovviamente se lo lancio ricevo un errore di campo (dicembre in questo caso) non riconosciuto. In effetti non essendoci ancora fatture di vendita su dicembre, nella query la colonna dicembre non esiste ancora e il relativo report va in errore.
    Il report lo hai costruito tu manualmente in visualizzazione struttura oppure ti sei servito della procedura guidata? Io opterei per quest'ultima.
  • Re: Errore su report per campo non riconosciuto

    Ciao i report (in realtà sono molti con dati diversi e impostazione simile) li ho costruiti manualmente, anche per rispettare le regole grafiche aziendali. Mi consigli di utilizzare la procedura guidata, posso provarci ma cosa cambia? Intendo dire che comunque a gennaio 2021 mi troverò nella query la sola colonna mese di gennaio, quindi...
    in ogni caso ci provo perchè sicuramente qualcosa mi sfugge, e ti aggiorno.
    grazie comunque per la risposta!
  • Re: Errore su report per campo non riconosciuto

    Non ho certezze, di solito le creazioni guidate hanno lo scopo di catturare il meglio delle proprietà dell'oggetto che vi è al di sotto. Può darsi che la procedura guidata scopri da sola che la query sottostante è una query a campi incrociati che può restituire dati incompleti. Quindi (mi aspetto) che il report si adatti alla tua esigenza...non mostrando errore.
    Prova, di più non saprei dirti.
  • Re: Errore su report per campo non riconosciuto

    Ovviamente le query a campi incrociati sono query particolari e non possono essere rappresentate con un report costruito con il Wizard.
    Purtroppo vanno gestire spesso e volentieri con del codice...proprio per gedtire l'assenza di dati...

    Quindi, se non hai dimestichezza con il codice... la vedo molto complessa, tuttavia puoi iniziare a guardare questi esempi:

    https://www.microsoft.com/en-us/microsoft-365/blog/2012/05/23/using-crosstab-queries-in-reports/

    https://www.fmsinc.com/microsoftaccess/query/crosstab-report/index.html

    https://hitechcoach.com/downloads-mainmenu-28/dynamic-report-based-on-a-crosstab-query
  • Re: Errore su report per campo non riconosciuto

    Supponendo cle le tabelle si chiamino:
    • tblClienti:
      • IDCliente
      • Cliente
    • tblMovimenti:
      • IDCliente
      • DataMovimento
      • Importo
    dovrai semplicemente creare la seguente query:
    SELECT tblClienti.Cliente, Sum(IIf(Month([DataMovimento])=1,[Importo],0)) AS Gennaio, Sum(IIf(Month([DataMovimento])=2,[Importo],0)) AS Febbaraio, Sum(IIf(Month([DataMovimento])=3,[Importo],0)) AS Marzo, Sum(IIf(Month([DataMovimento])=4,[Importo],0)) AS Aprile, Sum(IIf(Month([DataMovimento])=5,[Importo],0)) AS Maggio, Sum(IIf(Month([DataMovimento])=6,[Importo],0)) AS Giugno, Sum(IIf(Month([DataMovimento])=7,[Importo],0)) AS Luglio, Sum(IIf(Month([DataMovimento])=8,[Importo],0)) AS Agosto, Sum(IIf(Month([DataMovimento])=9,[Importo],0)) AS Settmbre, Sum(IIf(Month([DataMovimento])=10,[Importo],0)) AS Ottobre, Sum(IIf(Month([DataMovimento])=11,[Importo],0)) AS Novembre, Sum(IIf(Month([DataMovimento])=12,[Importo],0)) AS Dicembre
    FROM tblMovimenti INNER JOIN tblClienti ON tblMovimenti.IDCliente = tblClienti.IDCliente
    GROUP BY tblClienti.Cliente;
    
    dopodichè creerai il report, magari con la procedura guidata, appoggiato alla stessa.
  • Re: Errore su report per campo non riconosciuto

    In effetti non ho dimestichezza con il codice, comunque sono ottime indicazioni, in questi giorni sono a casa in quarantena e potro' senz'altro fare qualche prova.
    Grazie a Osvaldo, Alex e Stifone per il contributo!
  • Re: Errore su report per campo non riconosciuto

    Risolto!
    Mi è bastato seguire le spiegazioni riportate nel primo link postato da @Alex dove viene rappresentata esattamente la situazione che intendevo io.
    Grazie ragazzi, alla prossima!
Devi accedere o registrarti per scrivere nel forum
7 risposte