Καλησπέρα
Ευθύμη, στην επισυναπτόμενη ΒΔ μπορείς να δεις δύο τρόπους εμφάνισης στην έκθεση των εγγραφών που εμφανίζει και η φόρμα.
Α. Για την υλοποίηση του 1ου τρόπου έχει προστεθεί στην αρχική ΒΔ:
1) Ο βοηθητικός πίνακας tblHLP, με ένα μόνο πεδίο τύπου «μεγάλος ακέραιος».
2) Το ερώτημα qryShowRecordsForm, στο οποίο βασίζεται η έκθεση.
Στο ερώτημα υπάρχει κατάλληλο κριτήριο για την εμφάνιση μόνο των εγγραφών που δείχνει η φόρμα.
3) Η έκθεση rptShowRecordsForm, η οποία στηρίζεται στο ερώτημα qryShowRecordsForm και εμφανίζει τις εγγραφές που παρουσιάζει και η φόρμα.
Με το πάτημα του κουμπιού «Εμφάνιση Έκθεσης» της φόρμας gen τρέχει ο παρακάτω κώδικας:
Κώδικας:
Private Sub cmdOpenReport_Click()
Dim strSQL As String
On Error GoTo Err_Trap
strSQL = "INSERT INTO tblHLP (ID) VALUES("
CurrentDb.Execute "DELETE * FROM tblHLP"
With Me.RecordsetClone
.MoveFirst
Do While Not .EOF
CurrentDb.Execute strSQL & !Αναγνωριστικό & ")"
.MoveNext
Loop
End With
DoCmd.OpenReport "rptShowRecordsForm", acViewPreview
Exit Sub
Err_Trap:
MsgBox "Error #" & Err.Number & vbCrLf & Err.Description
End Sub
Β. Ο δεύτερος τρόπος είναι πιο απλός.
Προϋποθέτει η προέλευση της έκθεσης να περιλαμβάνει τα πεδία της φόρμας στα οποία εφαρμόζεται το φίλτρο και επιπλέον τα πεδία αυτά να έχουν ίδια ονόματα.
Για την υλοποίηση του 2ου τρόπου έχει προστεθεί στην αρχική ΒΔ:
1) Ο πίνακας gen2, στον οποίο τα πεδία Topothesia και Kathhgoria,έχουν γίνει πεδία αναζήτησης .
2) Η φόρμα gen2 με προέλευση τον πίνακα gen2
3) Η έκθεση rptShowRecordsForm2, η οποία στηρίζεται στον πίνακα gen2 στον οποίο στηρίζεται και η φόρμα.
Με το πάτημα του κουμπιού «Έκθεση» της φόρμας gen2 τρέχει ο παρακάτω κώδικας:
Κώδικας:
Private Sub cmdPrint_Click()
Dim strFilter As String
If Me.FilterOn Then strFilter = Me.Filter
DoCmd.OpenReport "rptShowRecordsForm2", acViewPreview, , strFilter
End Sub
Υπάρχουν πολλοί τρόπο για να φιλτράρουμε τις εγγραφές μιας έκθεσης.
Ο τρόπος που περιγράφεις στο πρώτο ερώτημά σου είναι από τους καλύτερους.
Φιλικά/Γιώργος