![]() |
Ορισμένος αριθμός εγγραφών σε έκθεση Καλησπέρα σε όλους τους φίλους. Το θέμα στο οποίο θέλω τη βοήθειά σας είναι το εξής. Έχω μια έκθεση με αρκετές εγγραφές η οποία θέλω να σπάσει σε πολλές σελίδες με ορισμένο αριθμό εγγραφών (14) και να έχω και το επιμέρους άθροισμα των δεκατεσσάρων αυτών εγγραφών. Ευχαριστώ εκ των προτέρων |
Καλησπέρα Ρίξε μια ματιά σε παρακαλώ στο συνημμένο. Υπάρχει Κώδικας κατά την Μορφοποίηση της Λεπτομέρειας της έκθεσης που ενεργοποιείται κατά την Προεπισκόπηση εκτύπωσης και ένα αόρατο πεδίο [txtcounter] στην Λεπτομέρεια που χρησιμεύει για να απαριθμεί την κάθε εγγραφή. Η ιδέα είναι Γίνεται απαρίθμηση εγγραφών (με το txtcounter, προέλευση: =1 - τρέχον άθροισμα: ανά ομάδα - ορατό:Όχι) όταν πάρει την τιμή 14, 28, 42 κοκ (14/14 δεν αφήνει υπόλοιπο, 28/14 δεν αφήνει υπόλοιπο, 42/14 δεν αφήνει υπόλοιπο κοκ) να σπρώξει τις παρακάτω εγγραφές σε νέα σελίδα...κάνοντας χρήση την ιδιότητα ForceNewPage |
Χρήστο ευχαριστώ για την απάντηση. Ως προς το πρώτο σκέλος δουλεύει μια χαρά. Χωρίζει τις σελίδες ανά 14 εγγραφές. Αν τώρα θελήσω να έχω και το άθροισμα των εγγραφών αυτών χωριστά, πως μπορώ να το πετύχω; Μήπως με κάποιο ερώτημα; |
1 Συνημμένο(α) Καλησπέρα στην παρέα Η επισυναπτόμενη ΒΔ περιέχει δύο εκθέσεις: 1) Στην tblPliromes έχω προσθέσει στην έκθεση που δημιούργησε ο Χρήστος ένα πλαίσιο κειμένου με όνομα txtCurrSum για την εμφάνιση του τρέχοντος αθροίσματος των πληρωμών. Στο πλαίσιο κειμένου η ιδιότητες Control Source ( προέλευση στοιχείου ελέγχου) και Running Sum (τρέχον άθροισμα) έχουν τεθεί σε : =[ΠΛΗΡΩΜΗ] και Over All, αντίστοιχα. 2) Η rptQuery παρουσιάζει έναν άλλο τρόπο εμφάνισης στην έκθεση N (14) γραμμών ανά σελίδα. Η έκθεση βασίζεται στο ερώτημα Query1 στο οποίο έχει προστεθεί:
Επειδή στον κώδικα της συνάρτησης CounterRows χρησιμοποιείται το αντικείμενο Scripting.Dictionary θα πρέπει να ορίσουμε μία αναφορά ( στο παράθυρο της VBA, Tools>References…) στη βιβλιοθήκη Microsoft Scripting Runtime. Φιλικά/Γιώργος |
1 Συνημμένο(α) Καλησπέρα σας. Γιώργο, ευχαριστώ που ασχολήθηκες με το θέμα. Δοκίμασα να εφαρμόσω το CounterRows στο δικό μου ερώτημα αλλά μου βγάζει μήνυμα "Στην παράσταση υπάρχει μη ορισμένη συνάρτηση "CounterRows"". Τι φταίει; Ανεβάζω ένα μικρό δείγμα μήπως τύχω περισσότερης βοήθειας. |
Καλησπέρα Γιώργο, η συνάρτηση CounterRows ορίζεται με κώδικα, ο οποίος πρέπει να βρίσκεται σε λειτουργική μονάδα (Module). Μπορείς να προσθέσεις μια λειτουργική μονάδα στη ΒΔ και να αντιγράψεις εκεί τον κώδικα και να την αποθηκεύσεις ή καλύτερα να κάνεις εισαγωγή στη ΒΔ της λειτουργικής μονάδας Module1 από τη δική μου. Μπορούμε να ανοίξουμε το παράθυρο της VBA πατώντας alt+F11. Κάνοντας διπλό κλικ στα συστατικά της εφαρμογής που φαίνονται στο αριστερό τμήμα του παραθύρου, στο δεξιό τμήμα εμφανίζεται ο κώδικάς τους Κώδικας υπάρχει και στο συμβάν Open της έκθεσης rptQuery. Φιλικά/Γιώργος |
Γιώργο, πήρα και τη Module1 και δούλεψε κανονικά. Όταν όμως μπαίνουν κάποια κριτήρια τότε η αρίθμηση παραμένει η ίδια. Δηλαδή, δεν αριθμεί μόνο τις εγγραφές που παραμένουν λόγω κριτηρίων, με αποτέλεσμα να λείπουν οι αριθμοί από τις εγγραφές που δεν εμφανίζονται. Με εκτίμηση Γιώργος |
Καλημέρα Γιώργο (Kapetang) θα ήθελα να ρωτήσω αν θα μπορούσα να απαριθμώ τις εγγραφές ως εξής: Counter: DCount("[ID ΠΛΗΡΩΜΩΝ]";"tblPliromes";"[ID ΠΛΗΡΩΜΩΝ]<=" & [ID ΠΛΗΡΩΜΩΝ]) ώστε να μην στηριχτώ σε Module (την ιδέα αυτή, που είναι δική σου, την πρωτοείδα σε ένα αρχείο διακύμανσης σκόρ) |
Καλημέρα, Να θέσω αλλιώς το θέμα μου, μήπως και βρω άκρη. Και η πρόταση του Γιώργου και αυτή του Χρήστου,απαριθμούν τις εγγραφές στον πίνακα. Κάτι να απαριθμεί τις εγγραφές στο ερώτημα υπάρχει; |
Καλημέρα Άνοιξε το ερώτημα του Γιώργου εντόπισε μια εγγραφή και διέγραψέ την... Κάνε το ίδιο και με το δικό μου αρχείο Η τιμή του πεδίου-απαριθμητή θα είναι διαφορετική στις 2 περιπτώσεις... |
1 Συνημμένο(α) Καλημέρα στην παρέα. Χρήστο, θα μπορούσες να χρησιμοποιήσεις τον τύπο, αλλά η access δε θα επέτρεπε να χρησιμοποιήσεις τις τιμές που επιστρέφει για την ομαδοποίηση των εγγραφών στην έκθεση. Γιώργο, για να γίνει σωστή η αρίθμηση των εγγραφών στα ερωτήματα που περιέχουν κριτήρια, πρέπει στη σχετική συνάρτηση CounterRows να λάβουμε υπόψη μας και τα κριτήρια. Στη ΒΔ που επισυνάπτω, στο ερώτημα Query1 πρόσθεσα το κριτήριο ID=2. Το ίδιο κριτήριο πρόσθεσα και στη συνάρτηση CounterRows.Έτσι η πρόταση: strSQL = "SElect [ID ΠΛΗΡΩΜΩΝ] FROM tblPliromes ORDER BY 1" έγινε: strSQL = "SElect [ID ΠΛΗΡΩΜΩΝ] FROM tblPliromes WHERE ID=2 ORDER BY 1" Η καλύτερη λύση είναι να ορίζουμε τα κριτήρια σε μια φόρμα και να ανοίγουμε την έκθεση από κει. Φυσικά θα πρέπει να διαμορφώσουμε κατάλληλα και τα κριτήρια στην πρόταση strSQL=… της συνάρτησης . Λεπτομέρειες για την αρίθμηση των εγγραφών των ερωτημάτων υπάρχουν στο σύνδεσμο: http://www.ms-office.gr/forum/access...rotimatos.html Φιλικά/Γιώργος |
Καλημέρα Γιώργο, Διέγραψα το Module, τροποποίησα το counter με την συνάρτηση που ανέφερα και η έκθεσή σου συνεχίζει να λειτουργεί. Ακόμη και όταν θέλησα ομαδοποίηση ανά 15 (Group15: (counter-1)/15) ... η έκθεση λειτούργησε. Χωρίς να θέλω να γίνω κουραστικός, τι εννοείς λέγοντας "η access δε θα επέτρεπε να χρησιμοποιήσεις τις τιμές που επιστρέφει για την ομαδοποίηση των εγγραφών στην έκθεση." |
Χρήστο σχετικά με το τελευταίο μήνυμά σου, που είδα τώρα, έχεις δίκιο. Η αρίθμηση στο ερώτημα, για λόγους ταχύτητας, γίνεται μια φορά. Για να ξαναγίνει και να προσαρμοστεί στα νέα δεδομένα του πίνακα απαιτείται η πρόταση κώδικα: Set dct = Nothing Την πρόταση αυτή την έβαλα στο συμβάν Open της έκθεσης. Έτσι η έκθεση που μας ενδιαφέρει δείχνει πάντα τα σωστά δεδομένα. Αν μας ενδιαφέρει το ερώτημα πριν ανοίξει θα πρέπει να εκτελείται η πρόταση Set dct = Nothing πχ με τη βοήθεια μιας φόρμας Φιλικά/Γιώργος |
Καλησπέρα Χρήστο Πριν δημιουργήσω τη συνάρτηση χρήστη για την αρίθμηση των εγγραφών του ερωτήματος χρησιμοποίησα ένα δευτερεύον ερώτημα. Στη συνέχεια ο οδηγός για τη δημιουργία της έκθεσης, παρουσίασε ένα μήνυμα ότι δεν μπορεί να δημιουργηθεί ομαδοποίηση από πεδίο που υπολογίζεται από δευτερεύον ερώτημα. Άλλαξα το ερώτημα και χρησιμοποίησα για την αρίθμηση τη συνάρτηση Dcount. Δοκίμασα πάλι με τον οδηγό να δημιουργήσω την έκθεση και μου έβγαλε (δεν ξέρω γιατί) το ίδιο μήνυμα. Έτσι συμπέρανα ότι η access δεν επιτρέπει τις ομαδοποιήσεις με πεδία που υπολογίζονται με τις παραπάνω μεθόδους και αναγκάστηκα να σκεφθώ κάποιο άλλο τρόπο αρίθμησης. Από τη διαδικασία αυτή προέκυψε η συνάρτηση χρήστη CounterRows. Φιλικά/Γιώργος ΥΓ Χρήστο γράφουμε ταυτόχρονα με αποτέλεσμα κάποιες απαντήσεις μου να μη αντιστοιχούν στο σωστό μήνυμά σου. |
Κατάλαβα Γιώργο..απλά σε μένα (με χρήση της Count...) όταν τρέχω τον οδηγό δεν κλοτσάει πουθενά και δημιουργεί την έκθεση με συγκεκριμένο πλήθος εγγραφών ανά σελίδα. Είτε κάνω ομαδοποίηση απ' τον οδηγό είτε αργότερα απ' την προβολή σχεδίασης ... όλα καλά!. Τα ξαναλέμε... :) |
Αγαπητοί φίλοι Χρήστο και Γιώργο, με βοηθήσατε αρκετά και ευχαριστώ πολύ. Τελικά χρησιμοποίησα ένα δεύτερο ερώτημα με τη μέθοδο που περιγράφει ο Γιώργος στο http://www.ms-office.gr/forum/access...rotimatos.html (4. Παράδειγμα (Ερώτημα qryCounter4)). Να είστε όλοι καλά Με εκτίμηση Γιώργος. |
| Η ώρα είναι 05:38. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.