![]() |
Σύνολα στο Υποσέλιδο Σελίδας Καλημέρα σε όλους, Επανέρχομαι με ένα "κουλό" πρόβλημα..... Έχω μια έκθεση η οποία δέχεται 15 εγγραφές ανά σελίδα maximum. Το ζητούμενο είναι πως θέλω να παίρνω στο υποσέλιδο σελίδας τα αθροίσματα των πεδίων μου. Δίνοντάς του όμως =Sum([Πεδίο]) μου δίνει #Σφάλμα#. Είναι δυνατόν να σου επιτρέπει σύνολα ανά έκθεση και όχι ανά σελίδα :wall: Αν έχει κάποιος καμιά ιδέα..... Ευχαριστώ, Μάρω |
Καλησπερα για κανε μια επισυναψη την βαση βρε Μαρω Δημητρης |
Καλησπέρα σε όλους! Αγαπητή Μαρία, αν δε βλέπουμε ένα επισυναπτόμενο παράδειγμα (όπως επισημαίνει και ο Δημήτρης) μας είναι δύσκολο να απαντήσουμε με σαφήνεια. Η συνάρτηση Sum([Πεδίο1]) σε μια φόρμα αθροίζει τις ΟΛΕΣ τις εγγραφές από Πεδίο1 Το ίδιο ισχύει και στις εκθέσεις που ανάλογα την προβολή το πεδίο θα εμφανίσει είτε#Σφάλμα# είτε το συνολικό άθροισμα. Γενικά, για να εμφανίσουμε το άθροισμα ενός πεδίου σε επίπεδο σελίδας θα χρειαστούμε: Στο υποσέλιδο σελίδας ένα πεδίο με το όνομα "PageTotals" (παραδειγματικό όνομα). και στη λειτουργική μονάδα της Έκθεσης τον παρακάτω κώδικα: Κώδικας: Option Compare DatabaseΚαλή συνέχεια! Φιλικά Τάσος |
Καλησπέρα, συνήθως επισυννάπτω αρχεία αλλά θεώρησα ότι ήταν κατανοητό το ερωτήμά μου :oooops: Τάσο για άλλη μια φορά με κάλυψες. Δημήτρη το ζητούμενο είναι σε μία έκθεση να έχουμε σύνολα ανά σελίδα. Αν χρειάζεσαι ακόμα την επισύνναψη πες μου να φτιάξω ένα αρχείο και να το ανεβάσω. Φιλικά, Μάρω |
Αν σε καλυψε ο Τασος Οκ Εμενα μου φανηκε περιεργο να μην σου βγαζει συνολα γι αυτο σου ειπα να επισυναψεις την βαση Πιθανος γιατι γω σχεδιαζω με τον οδηγο και οχι ελευθερα Θα ηθελα και την γνωμη του τασου σ αυτο...Υπαρχει καποια διαφορά Ετσι οπως το κανεις φαινεται σωστο Φιλικα Δημητρης |
Καλησπέρα , έχω και εγώ το ίδιο ακριβώς πρόβλημα. Συγκεκριμένα έχω ένα πεδίο [NET] , και θέλω στο τέλος κάθε σελίδας να μου βγάζει μερικό σύνολο. Γενικό σύνολο στο τέλος της έκθεσης βγάζει κανονικά , με το μερικό σύνολο ανά σελίδα έχω πρόβλημα. Μπορεί κάποιος να με βοηθήσει?? Ευχαριστώ:wall: |
Καλησπέρα σε όλους! Πάνο καλωσόρισες στο φόρουμ! Φίλοι μου ούτε ο οδηγός ούτε μια κενή έκθεση μπορεί να βοηθήσει στο πρόβλημα. Το Άθροισμα εγγραφών μιας σελίδας δεν υποστηρίζεται άμεσα από καμία έκδοση Access μέχρι τώρα εκτός και αν:
και στη λειτουργική μονάδα της Έκθεσης τον παρακάτω κώδικα: Κώδικας: Option Compare DatabaseΤάσος |
Τάσο μου, μήμως πρέπει ο κώδικας στο υποσέλιδο_σελίδας να μπεί : Private Sub PageFooter_Print(Cancel As Integer, PrintCount As Integer) Me.[Text box onoma] = PageTotal PageTotal = 0 End Sub Και στη ρουτίνα που αφορά την ενότητα 'Λεπτομέρεια' να γραφεί : PageTotal = PageTotal + Nz(Me.πεδίοτάδε) Για την περίπτωση του Πάνου το πεδίοτάδε είναι το ΝΕΤ Φιλικά Νίκος |
1 Συνημμένο(α) Καλησπέρα στην παρέα Στη ΒΔ, που επισυνάπτω, υπάρχει μία έκθεση που εμφανίζει: 1) Στις λεπτομέρειες το τρέχον άθροισμα του πεδίου «Poso». 2) Στο υποσέλιδο σελίδας: 2α) Το άθροισμα του πεδίου «Poso» για τις εγγραφές κάθε σελίδας και 2β) Το άθροισμα του πεδίου «Poso» για όλες τις προηγούμενες εγγραφές μέχρι την τελευταία της τρέχουσας σελίδας. Η περίπτωση 2α παρουσιάζεται μόνο στην εκτύπωση και σε προεπισκόπηση εκτύπωσης. Για την υλοποίηση χρησιμοποίησα, τον κώδικα του Τάσου και τη διόρθωση που πρότεινε ο Νίκος. Κώδικας: Option Compare DatabaseΣτις λεπτομέρειες πρόσθεσα το αδέσμευτο πλαίσιο κειμένου «txtPoso» και όρισα τις ιδιότητες, προέλευση στοιχείου ελέγχου:=[Poso] και τρέχον άθροισμα: Για την ομάδα. Στο υποσέλιδο πρόσθεσα το αδέσμευτο πλαίσιο κειμένου «FooterTotalFromStatr» και όρισα την ιδιότητα, προέλευση στοιχείου ελέγχου:=[txtPoso] Φιλικά/Γιώργος |
Καλησπέρα Γιώργο και Νίκο! Νίκο, σ ευχαριστώ για τη διόρθωση! Τα κατάφερα πάλι να τα ανεβάσω ανάποδα :biggrin: Θα έπρεπε να είμαι πιο προσεκτικός με τις επικολλήσεις μου... Μάλλον χρειάζομαι διακοπές:what: Τα λέμε Τάσος |
Ναι παιδια εχετε δικαιο. Μαρω συγνωμη ειχα λαθος Ειχα την εντυπωση οτι οπως στα αθροισματα ομαδων λειτουργουσε και το αθροισμα σελιδας. Τελικά ο Τασος εχει δικαιο. Χρειαζεται κωδικας. Παρ ολα αυτα νομιζω οτι οι ρουτινες δουλευουν μονο σε προεπισκοπιση.....Στο ανοιγμα οχι..... Εχετε καμια ιδεα...?....Αν και εκει δεν εχουμε σελιδοποιηση νομιζω Φιλικα Δημητρης |
καλό βράδυ Δημήτρη, σωστά μάντεψες. Ο κώδικας που υπολογίζει το άθροισμα στο υποσέλιδο ανήκει σε ρουτίνες συμβάντων, τα οποία δε μπορεί να λάβουν χώρα (πυροδοτηθούν) σε προβολή έκθεσης. Μόνο στην εκτύπωση της έκθεσης και την προβολή εκτύπωσης πυροδοτούνται τα συμβάντα, οπότε εκτελείται ο κώδικας, υπολογίζεται το άθροισμα και εκτυπώνεται ή εμφανίζεται στο υποσέλιδο. Φιλικά/Γιώργος |
Καλημέρα σε όλους!!!!!!!! Σχετικά με το κώδικα του Τάσο θα ήθελα να επισημάνω κάτι. Στο συμβάν detail section:Retreat Αυτο ενεργοποιείται οταν μορφοποιείται η έκθεση και είναι πιθανόν να τρέξει ο κώδικας του print 2 φορές οποτε θα βγει λάθος αποτέλεσμα. Καλό είναι να προσθέσουμε κάποιο κώδικα εκεί όπως π.χ. PageTotal = PageTotal + (Nz(Me.[Poso])*-1) Το συμβάν αυτο πυροδοτείται όταν στη μορφοποίηση του report δεν χωρούν οι εγγραφές και πάνε σε επόμενη σελίδα. |
Καλημέρα Γιώργο (συνονόματε), βλέπω ότι το κατέχεις το «άθλημα». Μήπως θα μπορούσες να επισυνάψεις μία ΒΔ που θα προσομοιώνει το πρόβλημα, ώστε να γίνει πλήρως κατανοητό; Αν στο συμβάν Retreat μηδενίζαμε το άθροισμα, θα λύνονταν το πρόβλημα;. Φιλικά/Γιώργος |
Καλησπέρα σε όλους-Retreat Event Δεν έχω δηστυχώς κάποια βάση να δείτε. Πριν χρόνια ειχα χρησιμοποιήσει κάτι τέτοια σε ένα πρόγραμμα μισθοδοσίας του δημοσίου που είχε πολλές σελίδες. Για να δειτε πως λειτουργεί σε μια πολυσέλιδη φόρμα στα συμβάντα 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 για να δείτε τη συμπεριφορά του και μετά να αρχίσετε τους υπολογισμούς. Σε κάθε περίπτωση χρειάζεται μεγάλη προσοχή κατά τη γνώμη μου. Συγνώμη για το μεγάλο κείμενο, ελπίζω να σας διαφώτισα. |
Καλημέρα Γιώργο, σ’ ευχαριστώ πολύ για την αναλυτική ενημέρωση. Φιλικά/Γιώργος |
Ευχαριστώ πολύ όλους , θα το δοκιμάσω και θα επανέλθω ...:011: |
Καλημέρα , όλα καλά με τον κώδικα αλλά συμβαίνει το εξής πρόβλημα , στην πρόσθεση συνόλου ανα σελίδα μου προσθέτει και μία εγγραφή παραπάνω η οποία βρίσκεται στην δεύτερη σελίδα ενώ το μερικό σύνολο της δεύτερη σελίδας είναι σωστό. Μάλλον έχει να κάνει με αυτό που αναφέρει ο "gnikol" Γιώργος ποιο πάνω. Δεν κατάλαβα όμως πως θα το εφαρμόσω ......:what: |
1 Συνημμένο(α) Καλησπέρα Πάνο, πολύ πιθανόν να έπεσες στην περίπτωση που επισήμανε ο Γιώργος (gnikol). Στην έκθεση της ΒΔ, που επισυνάπτω ,έχω προσθέσει και τον κώδικα που πρότεινε ο gnikol. Πιστεύω ότι εύκολα θα τον προσαρμόσεις στην περίπτωσή σου. Αν αντιμετωπίσεις δυσκολίες θα πρέπει να ανεβάσεις τη ΒΔ με την προβληματική έκθεση. Φιλικά/Γιώργος |
:oeo: Δεν μπορώ να καταλάβω τι φταίει . Στην συγκεκριμένη βάση που θέλω δεν δουλεύει , σε άλλες το δοκίμασα μιά χαρά , δεν μπορώ να ανεβάσω και τη βάση είναι 40 MB . Στη δική μου τη βάση παίρνει στοιχεία από ερώτημα με στοιχεία από πολλούς πίνακες. Εξακολουθεί και μου προσθέτει 1 εγγραφή από την επόμενη σελίδα :035: |
Option Compare Database Option Explicit Dim lastcount As Integer Dim PageTotal As Currency ' Double? Private Sub FormDetail_Print(Cancel As Integer, PrintCount As Integer) If lastcount = 0 Then lastcount = PrintCount If PrintCount = lastcount Then PageTotal = PageTotal + Nz(Me.[Poso]) Else lastcount = PrintCount PageTotal = Nz(Me.[Poso]) End If End Sub Private Sub FormDetail_Retreat() PageTotal = PageTotal + Nz(Me.[Poso]) * (-1) End Sub Private Sub FormPageFooter_Print(Cancel As Integer, PrintCount As Integer) Me.PageTotals = PageTotal PageTotal = 0 End Sub Για δοκίμασε το ετσι να δουμε αποτελεσμα Φιλικα Δημητρης |
Δεν το έχω δοκιμάσει ακόμα Δημήτρη λόγω πολλών υποχρεώσεων και πολλή δουλειά , θα το δοκιμάσω αύριο Σάββατο και θα σου πω , ευχαριστώ |
:yahoo: Επιτέλους δουλεύει , Ευχαριστώ πολύ όλους για την βοήθεια:friends: |
| Η ώρα είναι 15:26. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.