Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Επιλογή Πεδίων κατά την Εκτύπωση Έκθεσης
Καλημέρα σε όλους τους φίλους. Θα ήθελα να θέσω ένα ερώτημα που κατά την ταπεινή μου γνώμη θα πρέπει να απασχολεί αρκετούς φίλους. Πως μπορούμε κατά την εκτύπωση ή την προεπισκόπηση εκτύπωσης μιας έκθεσης να μπορούμε να επιλέγουμε ποια πεδία θα εκτυπώνονται. Πιο συγκεκριμένα: Στο πρδ που επισυνάπτω η έκθεση (data) μου εμφανίζει κάποια πεδία βασισμένα στο ερώτημα epilogi ή από την φόρμα data. Όταν θέλουμε να μας εκτυπώσει η έκθεση ορισμένα πεδία και όχι όλα τα πεδία αναγκαστικά πηγαίνουμε σε προβολή σχεδίασης στο ερώτημα και ανάλογα με τη θέλουμε να εκτυπώσουμε επιλέγουμε ή αποεπιλέγουμε τα πεδία, δηλαδή μεταβάλλουμε το ερώτημα. Πως λοιπόν μπορούμε να αποφύγουμε αυτή τη διαδικασία ώστε κατά την προεπισκόπηση της έκθεσης να μπορούμε να «μπαίνουμε» σε μια άλλη φόρμα να υποθέσω, ώστε να επιλέγουμε ή να αποεπιλέγουμε τα πεδία με χρήσης ενός πλαισίου ελέγχου. Πιστεύω να έγινα κατανοητός και όχι το αντίθετο με το μακροσκελή ερώτημά μου. Με φιλικούς χαιρετισμούς σε όλη την κοινότητα Τζίμης |
#2
| |||
| |||
Συγχώμη ξέχασα να κάνω upload το αρχείο
|
#3
| |||
| |||
Τζίμη καλησπέρα Ο αυτοματισμός που ζητάς, ακόμα και αν υπάρχει δεν θα σου δώσει τα αναμενόμενα αποτελέσματα επειδή: Πως θα φαίνεται μια έκθεση με οριζόντιο προσανατολισμό όταν περιέχει μόνο τρία πεδία; Ακόμα και αν προγραμματιστικά μπορέσεις να αλλάξεις τον προσανατολισμό ή να "κεντράρεις" τα πεδία, πόσο, πότε, και κάτω από ποιες συνθήκες θα γίνεται αυτό; Μήπως είναι προτιμότερο να φτιάξεις περισσότερες εκθέσεις με τους πιθανούς συνδυασμούς πεδίων (έτσι θα έχεις τον πλήρη έλεγχο) και να επιλέγεις με Listbox ή ComboBox την επιθυμητή έκθεση προς προεπισκόπηση / εκτύπωση;
__________________ Φιλικά Χρήστος ___________________________ Αυτά που δεν ξέρεις φτιάχνουν μία βιβλιοθήκη που καθένας μας θα ήταν υπερήφανος να έχει. Αν η γνώση δημιουργεί προβλήματα,η άγνοια σίγουρα δεν μπορεί να τα λύσει. |
#4
| |||
| |||
Χρήστο ευχαριστώ για την απάντησή σου.Το πρόβλημα το αντιμετωπίζω όπως ακριβώς το λες.Με λίστα από εκθέσεις.Πάντως αν με χρήση κώδικα ξεπερνιέται , θα ήταν πέρα για πέρα πολύ χρήσιμο και εξυπηρετικό. Με εκτίμηση |
#5
| |||
| |||
Καλησπέρα στην παρέα Με τη VBA μπορούμε να σχεδιάσουμε μία έκθεση και να τη διαμορφώσουμε σύμφωνα με τις ανάγκες μας. Ο απαιτούμενος κώδικας, όμως, θα είναι αρκετά μακροσκελής και περίπλοκος. Επιπλέον θα είναι προσαρμοσμένος στη συγκεκριμένη περίπτωση με αποτέλεσμα να μη μπορεί να εφαρμοστεί σε άλλη χωρίς σημαντικές αλλαγές. Κατά τη γνώμη μου, η λύση που πρότεινε ο Χρήστος είναι η καλύτερη. Στη ΒΔ ,που επισυνάπτω, υπάρχει μία απλή προσέγγιση του ζητούμενου με κώδικα. Ο κώδικας είναι προσαρμοσμένος στη συγκεκριμένη περίπτωση και συνεπώς δε μπορεί να εφαρμοστεί γενικά. Η μέθοδος που εφαρμόστηκε είναι απλή. Τα πεδία που θέλουμε να μη εμφανίζονται, μαζί με τις ετικέτες τους, αποκρύπτονται και ο χώρος που καταλαμβάνουν μοιράζεται στα υπόλοιπα. Στη φόρμα «Data» έχω προσθέσει, για κάθε πεδίο, ένα πλαίσιο ελέγχου, ώστε στην έκθεση να εμφανίζονται μόνο τα πεδία με τσεκαρισμένο πλαίσιο ελέγχου. Στην έκθεση έβαλα τον παρακάτω κώδικα: Κώδικας: Private Sub Λεπτομέρεια_Format(Cancel As Integer, FormatCount As Integer) Dim c As Access.Control, iLeft As Long, iPer As Long Dim iALL As Long, sum As Long, iNoV As Long 'Απόκρυψη πεδίων και των αντίστοιχων ετικετών For Each c In Forms("data").Controls If TypeOf c Is CheckBox Then If Not c.Value Then Me.Controls(c.Tag).Visible = False Me.Controls(c.Tag & "_Ετικέτα").Visible = False sum = sum + Me.Controls(c.Tag).Width iNoV = iNoV + 1 End If iALL = iALL + 1 End If Next 'Αρχικές τιμές προσδιορισμού της θέσης των ορατών πεδίων iLeft = 57 Select Case iALL - iNoV Case 1 iPer = 0 Case 2 iPer = sum / 2 Case Else iPer = sum / (iALL - iNoV - 1) + 10 End Select For Each c In Me.Section(0).Controls If TypeOf c Is TextBox Then If c.Visible Then c.Move iLeft Me.Controls(c.Name & "_Ετικέτα").Move iLeft iLeft = iLeft + c.Width + iPer End If End If Next End Sub 1. Στα πλαίσια ελέγχου η ιδιότητα «Ετικέτα» (Tag) θα πρέπει να έχει τιμή το όνομα του πεδίου στην έκθεση (πχ afm). 2. Το όνομα των ετικετών της έκθεσης θα είναι ίσο με το όνομα του αντίστοιχου πεδίου ακολουθούμενο από τη συμβολοσειρά «_Ετικέτα» (πχ afm_Ετικέτα). Φιλικά /Γιώργος |
#6
| |||
| |||
Γιώργο υπέροχη δουλειά.Ακριβώς αυτό ήθελα.Βέβαια όπως αναφέρεις σε διαφορετικές περιπτώσεις θα υπάρχουν σημαντικές αλλαγές στον κώδικα και θα είναι δύσκολο για μας τους αρχάριους σε VBA να τον αλλάξουμε.Όμως μέσα από τα εύστοχα πρδ που μας δίνετε κάθε φορά και εμεις οι υπόλοιποι κάνουμε ένα βήμα προς τα εμπρος. Να είσαι καλά Τζίμης. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Φόρμες ] Επιλογή αντιγραφής πεδίων | mgeorge | Access - Ερωτήσεις / Απαντήσεις | 2 | 29-04-14 19:29 |
[ Ερωτήματα ] Εύρεση πεδίων απο δύο πίνακες για δημιουργία έκθεσης | Γιωργος Μπεστ | Access - Ερωτήσεις / Απαντήσεις | 3 | 20-05-12 20:49 |
επιλογή πεδίων ερωτήματος | markosv | Access - Ερωτήσεις / Απαντήσεις | 3 | 16-11-11 16:27 |
[ Εκθέσεις ] Εισαγωγή ημερομηνίας από έως κατά την εκτελεσμένη της έκθεσης | george74 | Access - Ερωτήσεις / Απαντήσεις | 5 | 04-05-11 09:39 |
Η ώρα είναι 21:24.