Δεν έχω δηστυχώς κάποια βάση να δείτε.
Πριν χρόνια ειχα χρησιμοποιήσει κάτι τέτοια σε ένα πρόγραμμα μισθοδοσίας του
δημοσίου που είχε πολλές σελίδες.
Για να δειτε πως λειτουργεί σε μια πολυσέλιδη φόρμα στα συμβάντα Print + Retreat
γράψε κάνε debug.print "Print" και debug.print "Retreat" για να δειτε τη σειρά που αυτά
πυροδοτούνται. Γενικά χρειάζεται προσοχή οταν δίνουμε τιμή σε μια μεταβλητή με τέτοιο
τρόπο γιατί οταν έχουμε να κάνουμε με χρήμα ισως έχουμε πρόβλημα.Επίσης θα πρέπει να λάβουμε υπόψη μας:
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If PrintCount =1 then
vba code......
end if
Κι εδώ με την ίδια λογική, αν τρέξει 2 φορές τοτε γίνεται PrintCount >1.
Δινουμε στο retreat τιμή -1 για να αφαιρέσουμε το επιπλέον άθροισμα απο τη μεταβλητή.
Αν δώσουμε τιμή 0 στη μεταβλητή τοτε θα χάσουμε ολο τον προηγούμενο υπολογισμό.
Για να καταλάβετε πως γίνεται αυτο ας υποθέσουμε οτι εχουμε μια έκθεση με 26 εγγραφές και η σελίδα μας βάζει 25. Οταν τρέξει το report το συμβάν print θα γίνει σε κάθε μια εγγραφή.
Είναι πιθανόν, το έχω δει αυτο, να βάλει και τις 26 εγγραφές στη πρώτη σελίδα και μετά να δει οτι δεν χωρούν και να κάνει αυτο που λέμε οπισθοχώρηση κατά μια και να τη βάλει στην επομενη
σελίδα. Σε αυτη τη περίπτωση τη τελευταία εγγραφή θα τη περάσει 2 φορές και θα τρέξει το συμβάν print επίσης 2 φορές οποτε θα έχουμε λάθος άθροισμα. Επισης πρέπει να ληφθεί υπόψη
οτι οταν ανοίγει η έκθεση τρέχουν ολα τα συμβάντα και οταν εκτυπώνεται επίσης τρέχουν κάποια.
Καλό θα είναι να βάλετε ένα debug.print σε κάθε section για να δείτε τη συμπεριφορά του
και μετά να αρχίσετε τους υπολογισμούς. Σε κάθε περίπτωση χρειάζεται μεγάλη προσοχή κατά τη γνώμη μου.
Συγνώμη για το μεγάλο κείμενο, ελπίζω να σας διαφώτισα.