Θέμα: Εκθέσεις Πρόβλημα με ετικέτες

Εμφάνιση ενός μόνο μηνύματος
  #5  
Παλιά 23-05-11, 09:08
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα σε όλους!

Αγαπητέ Κώστα, η πιο απλή μέθοδος (προϋποθέτει 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

Φιλικά

Τάσος


__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 23-05-11 στις 11:45.
Απάντηση με παράθεση