Εμφάνιση ενός μόνο μηνύματος
  #4  
Παλιά 03-03-11, 15:43
kapetang Ο χρήστης kapetang δεν είναι συνδεδεμένος
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα Αλέξανδρε
Για να προσθέσουμε στοιχεία ελέγχου σε μία έκθεση με τη μέθοδο 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
Στη ΒΔ που επισυνάπτεται παρουσιάζεται μία απλή προσέγγιση της παραπάνω λύσης

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb moveControlsReport.mdb (264,0 KB, 164 εμφανίσεις)
Απάντηση με παράθεση