Καλησπέρα Αλέξανδρε
Για να προσθέσουμε στοιχεία ελέγχου σε μία έκθεση με τη μέθοδο CreateReportControl θα πρέπει να προηγηθεί το άνοιγμα της έκθεσης σε προβολή σχεδίασης.
Αν η ΒΔ είναι σε μορφή .mde η έκθεση δε μπορεί να ανοίξει σε μορφή σχεδίασης και συνεπώς δεν μπορούν να προστεθούν στοιχεία ελέγχου.
Με κώδικα θα μπορούσαμε να μετακινήσουμε τα στοιχεία ελέγχου που περιέχει μια έκθεση, αλλά δε θα μπορούσαμε να αποθηκεύσουμε την έκθεση με τις νέες θέσεις τους.
Κατά τη γνώμη μου, για να υλοποιηθεί το ζητούμενο, θα πρέπει:
1) Η έκθεση να βασίζεται σε πίνακα (ή ερώτημα) και να περιέχει όλα τα πεδία (δεσμευμένα και υπολογιζόμενα).
2) Να δημιουργηθεί πίνακας (πχ tblFormat) με πεδία:
«fName» Θα αποθηκεύει το όνομα των στοιχείων της έκθεσης.
«fX», «fY», «fW», «fH». Που θα αποθηκεύουν τη θέση και τις διαστάσεις των στοιχείων ελέγχου, σε κατάλληλες μονάδες (πχ mm).
3) Να δημιουργηθεί μία φόρμα (πχ frmFormat», που θα βασίζεται στον πίνακα «tblFormat» και θα τροποποιεί τα στοιχεία της θέσης και των διαστάσεων των στοιχείων ελέγχου της έκθεσης.
4) Να γραφεί κατάλληλος κώδικας στο συμβάν Report_Load. Όπως:
Κώδικας:
Private Sub Report_Load()
Dim rs As DAO.Recordset
Const m As Double = 56.7
Set rs = CurrentDb.OpenRecordset("tblFormat")
With rs
.MoveLast
If .RecordCount > 0 Then
.MoveFirst
Do Until .EOF
Me.Controls(.Fields("fName")).Move .Fields("fX") * m, .Fields("fY") * m, _
.Fields("fW") * m, .Fields("fH") * m
.MoveNext
Loop
End If
End With
rs.Close
End Sub
Στη ΒΔ που επισυνάπτεται παρουσιάζεται μία απλή προσέγγιση της παραπάνω λύσης
Φιλικά/Γιώργος