Καλημέρα σε όλους!
Αγαπητέ Κώστα, η πιο απλή μέθοδος (προϋποθέτει
VBA) είναι να ελέγχουμε την ιδιότητα "
NextRecord" της έκθεσης στο συμβάν "
OnPrint" του τμήματος
Λεπτομέρεια (Detail).
Η μέθοδος αυτή μας επιτρέπει επίσης να ορίσουμε κατά το άνοιγμα της έκθεσης προγραμματιστικά ή χειροκίνητα τον αριθμό επαναλήψεων των εγγραφών.
Αν η έκθεση ανοίγει με κουμπί τότε ο (παραδειγματικός) κώδικας πίσω από το κουμπί θα είναι:
Κώδικας:
Private Sub cmdOpenLabelsReport_Click()
On Error GoTo ErrH
DoCmd.OpenReport "RepeatRecords", acPreview, , , , Me.txtNumberOfRecordRepeats
' txtNumberOfRecordRepeats = ένα μή δεσμευμένο πεδίο στη φόρμα όπου ο χρήστης θα ορίζει τον αριθμό επαναλήψεων.
Exit_Sub:
Exit Sub
ErrH:
MsgBox Err.Description
Resume Exit_Sub
End Sub
Στη λειτουργική μονάδα της έκθεσης περνάμε τον παρακάτω κώδικα:
Κώδικας:
Option Compare Database
Option Explicit
Private CopiesCount As Integer, IntCounter As Integer
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) ' Detail = το όνομα του τμήματος "Λεπτομέρεια"
IntCounter = IntCounter + 1
Me.NextRecord = IntCounter = CopiesCount
If Me.NextRecord Then IntCounter = 0
End Sub
Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
CopiesCount = Nz(Me.OpenArgs)
If CopiesCount = 0 Then CopiesCount = _
CInt(InputBox("΄Δώστε τον αριθμό επαναλαμβανόμενων εγγραφών", , 3))
If CopiesCount = 0 Then CopiesCount = 1
End Sub
Μια άλλη μέθοδος είναι να δημιουργήσουμε ένα ερώτημα που να περιλαμβάνει τις εγγραφές με περισσότερες επαναλήψεις.
Παράδειγμα για 3 επαναλήψεις: Όνομα Ερωτήματος: RepeatedRecords
Έστω ότι τα δεδομένα πηγάζουν από τον πίνακα
tblCustomers.
Ο κώδικας SQL του ερωτήματος:
Κώδικας:
SELECT tblCustomers.* as tmp1
FROM tblCustomers
UNION ALL
SELECT tblCustomers.* as tmp2
FROM tblCustomers
UNION ALL
SELECT
tblCustomers.* as tmp3
FROM tblCustomers
ORDER BY tblCustomers.ID;
Ως προέλευση εγγραφών της έκθεσης ορίζουμε
RepeatedRecords
Φιλικά
Τάσος