Καλησπέρα στην παρέα
Μάρω, στη βάση δεδομένων που επισυνάπτω, γίνεται μια προσπάθεια υλοποίησης του ζητούμενου.
Η λύση είναι παρόμοια με τη μία από τις δύο λύσεις που προτείνει ο Γιάννης, με κάποιες διαφορές που ίσως φανούν χρήσιμες (μπορεί και να σε μπερδέψουν

).
Αποτελείται από ένα πίνακα «tblContacts», τα ερωτήματα «qryContacts1», «qryContacts2», «qryContacts3» και τη φόρμα «frmOpenQueries».
Όταν φορτώνεται η φόρμα γεμίζει μία λίστα με τα ονόματα των ερωτημάτων που υπάρχουν στη βάση.
Στη φόρμα μπορούμε να επιλέξουμε τον προσανατολισμό εκτύπωσης σελίδας (κατακόρυφο ή οριζόντιο) και ακολούθως να κάνουμε διπλό κλικ σε ένα ερώτημα της λίστας για να ανοίξει. Ανοίγει σε προβολή φύλλου δεδομένων, ώστε να έχουμε τη δυνατότητα εφαρμογής φίλτρων.
Μετά την εφαρμογή ή όχι κάποιου φίλτρου κάνουμε κλικ στο κουμπί του εκτυπωτή της γραμμής εργαλείων γρήγορης πρόσβασης για να το εκτυπώσουμε.
Με το κλείσιμο της φόρμας ο προσανατολισμός εκτύπωσης επανέρχεται στον αρχικό.
Η λειτουργικότητα της φόρμας οφείλεται στον παρακάτω κώδικα.
Κώδικας:
Private Sub Form_Close()
'Επαναφέρεται ο αρχικός προσανατολισμός σελίδας
Application.Printer.Orientation = Me!lblDefaultPrinter.Tag
End Sub
Private Sub Form_Load()
Dim qd As DAO.QueryDef
'Αποθήκευση προσανατολισμού σελίδας προεπιλεγμένου εκτυπωτή
Me!lblDefaultPrinter.Tag = Application.Printer.Orientation
Me.optOriontation = Application.Printer.Orientation
Me!lstQueries.RowSourceType = "Value List"
Me.lstQueries.RowSource = "" 'άδεισμα λίστας
'Γέμισμα της λίστας με τα ερωτήματα της βάσης δεδομένων
For Each qd In CurrentDb.QueryDefs
Me.lstQueries.AddItem qd.Name
Next
Me!lstQueries.SetFocus
Me!lstQueries.ListIndex = 0
Set qd = Nothing
End Sub
Private Sub lstQueries_DblClick(Cancel As Integer)
'Ορισμός προσανατολισμού σελίδας
Application.Printer.Orientation = Me.optOriontation
'Εμφανίζει το ερώτημα σε μορφή κανονική για εφαρμογή φίλτρων
DoCmd.OpenQuery Me.lstQueries, acViewNormal
End Sub
Φιλικά/Γιώργος
Υ.Γ Γιάννη είσαι πολύ γρήγορος. Με πρόλαβες.....