Report: evento su formattazione corpo azzera dati calcolati in VBA???

di il
3 risposte

Report: evento su formattazione corpo azzera dati calcolati in VBA???

Ciao a tutti

in Access 2010 ho un report con raggruppamento sul corpo, con i suoi intestazione e piè di pagina.

nell'evento Corpo_Format() faccio dei calcoli e compilo dei campi che vengono visualizzati nel corpo e totalizzati per mostrarli nel suo piè pagina; nel suo pie di pagina mostro i totali e li azzero per il prossimo raggruppamento. Sono costretto a fare così perchè non sono semplici campi calcolati.

Primo mistero: facendo debug si vede che l'evento corpo format viene eseguito due volte, o meglio viene eseguito nell'ordine due volte, cioè elabora tutti i record una prima  volta, ricominciando da capo per una seconda volta

Secondo mistero: se l'ultima riga del corpo capita a fine della pagina, nel suo piè di pagina non trovo più i dati totalizzati.

Scusate la mia ignoranza, ma disturbo voi perchè la documentazione di access è veramente scarsa in questa versione e anche google non aiuta granchè……

Grazie comunque a tutti e ciao

3 Risposte

  • Re: Report: evento su formattazione corpo azzera dati calcolati in VBA???

    11/04/2024 - bruma ha scritto:


    Primo mistero: facendo debug si vede che l'evento corpo format viene eseguito due volte

    Ciao,

    prima di tutto è doveroso affermare che non si tratta di misteri ma di cose ben note e nulla viene fatto a caso.

    Quindi nessun mistero!  ;-) 


    Ms Access Report, soprattutto se ci sono calcoli particolari, si comporta proprio così… esegue tutte le letture che necessitanop per completare il codice a cui è sottoposto.
    Quindi no Mistero ma Normale. … fa così !! evidentemente ha bisogno, come in altri molti casi in sistemi non Ms Access, di eseguire elaborazioni spacchettando i problemi e risolvendoli poco alla volta. Un pò come fanno le AI che spacchettano le informazioni per riuscire a trovare corrispondenze per la ricerca delle risposte più attinenti al quesito da risolvere. Questo sistema velocizza l'elaborazione delle informazioni con risposte più soddisfacenti.

    11/04/2024 - bruma ha scritto:


    Secondo mistero: se l'ultima riga del corpo capita a fine della pagina, nel suo piè di pagina non trovo più i dati totalizzati.

    No mistero ma possibile che capiti. Quindi è Normale anche se non ci piace.
    In sostanza quando l'ultima riga del report si trova alla fine della pagina, Ms Access ha bisogno di capire se esiste o meno la necessità di eseguire il salto pagina o cambio di sezione o fine report. In pratica non lo sa fino a quando non si cerca di cambiare pagina anche se di fatto non esistono più pagine da formattare. In questo caso Ms Access completa la formattazione della pagina solo quando è sicuro che non esistono altre pagine.
    Quindi questo può accadere ed è risolvibile forzando i calcoli di fine pagina. Oppure assicurarsi di gestire in modo appropriato quando e come deve essere cambiata pagina o sezioni o fine report, interagendo con le proprietà del report. Fai dei test e probabilmente troverai la giusta impostazione delgli eventi prima e dopo salto pagina/sezione/fine report in modo che il report possa essere completamente formattato con i dovuti calcoli a fine pagina e possa calcolare correttamente i totali di piè pagina.

    Fare anche attenzione se e come e quando devono essere riportati i totali di pagina interpretando correttamente “fine della pagina” e “fine del report” che sono due cose (eventi) diverse come ben saprai.

    11/04/2024 - bruma ha scritto:


    Scusate la mia ignoranza,

    Non è questione di ignoranza, ma è che non siamo abituati e non ragioniamo come ragiona Ms Access. Abbiamo due logiche diverse.  ;-)
    Noi possiamo risolvere problemi e calcoli in modo sequenziale (prima uno e poi un altro e così via)… le macchine lo fanno in modo parallelo risolvendo più problemi e calcoli nello stesso momento e da qui la necessità di spacchettare le informazioni per poi ricomporle restituendo i risultati finali. Sarà per questo che le macchine sono più veloci di noi a risolvere problemi e calcoli ?  Sicuramente usano meglio di noi la memoria e la capacità di calcolo.
    Però non hanno emotività, ingegno e creatività … pertanto non hanno inventiva. 
    Quindi in questo siamo più bravi noi rispetto alle macchine. …. però siamo lenti ;-))

    Vabbè , più o meno (forse più meno che più) le cose stanno così,  o le possiamo, a grandi linee, vederle in questo modo. 

    Ciao ;-)


    P.S: esiste anche un Terzo Mistero… ma quest'ultimo appartiene alla fede… ;-) 

  • Re: Report: evento su formattazione corpo azzera dati calcolati in VBA???

    Ciao

    ti ringrazio della pazienza e della lunga spiegazione; purtroppo non riesco ad individuare, giocando con i diversi eventi, il punto incriminato.

    Risolverò in un'altro modo (vittoria di Pirro…): prima di lanciare il report mi compilo con VBA una tbl di comodo con tutti i dati calcolati e su quelli faccio un report “tradizionale”.

    Grazie ancora e ciao

    Maurizio

  • Re: Report: evento su formattazione corpo azzera dati calcolati in VBA???

    12/04/2024 - bruma ha scritto:


    ti ringrazio della pazienza e della lunga spiegazione; purtroppo non riesco ad individuare, giocando con i diversi eventi, il punto incriminato.

    Ciao… ma di nulla, poi io sono prolisso…. ;-)

    Capisco e comprendo che non sia facile …. magari avere davanti il tuo codice aiuterebbe a trovare l'inghippo e a dare una risposta mirata e risolutiva.

    12/04/2024 - bruma ha scritto:


    Risolverò in un'altro modo (vittoria di Pirro…): prima di lanciare il report mi compilo con VBA una tbl di comodo con tutti i dati calcolati e su quelli faccio un report “tradizionale”.

    Può essere una soluzione se si vuole…. magari fai attenzione se sei in multiutenza… andrebbe in conflitto la tabella di comodo se un altro client esegue la stessa operazione in quel preciso momento.
    Magari si potrebbe creare un recordset da codice vba, eseguire eventuali calcoli di dettaglio e totali , aggiornarlo e alla fine impostarlo come record source al report 

    Ciao   ;-)

Devi accedere o registrarti per scrivere nel forum
3 risposte