Καλησπέρα στην παρέα
Με τη
VBA μπορούμε να σχεδιάσουμε μία έκθεση και να τη διαμορφώσουμε σύμφωνα με τις ανάγκες μας.
Ο απαιτούμενος κώδικας, όμως, θα είναι αρκετά μακροσκελής και περίπλοκος.
Επιπλέον θα είναι προσαρμοσμένος στη συγκεκριμένη περίπτωση με αποτέλεσμα να μη μπορεί να εφαρμοστεί σε άλλη χωρίς σημαντικές αλλαγές.
Κατά τη γνώμη μου, η λύση που πρότεινε ο Χρήστος είναι η καλύτερη.
Στη ΒΔ ,που επισυνάπτω, υπάρχει μία απλή προσέγγιση του ζητούμενου με κώδικα.
Ο κώδικας είναι προσαρμοσμένος στη συγκεκριμένη περίπτωση και συνεπώς δε μπορεί να εφαρμοστεί γενικά.
Η μέθοδος που εφαρμόστηκε είναι απλή.
Τα πεδία που θέλουμε να μη εμφανίζονται, μαζί με τις ετικέτες τους, αποκρύπτονται και ο χώρος που καταλαμβάνουν μοιράζεται στα υπόλοιπα.
Στη φόρμα «Data» έχω προσθέσει, για κάθε πεδίο, ένα πλαίσιο ελέγχου, ώστε στην έκθεση να εμφανίζονται μόνο τα πεδία με τσεκαρισμένο πλαίσιο ελέγχου.
Στην έκθεση έβαλα τον παρακάτω κώδικα:
Κώδικας:
Private Sub Λεπτομέρεια_Format(Cancel As Integer, FormatCount As Integer)
Dim c As Access.Control, iLeft As Long, iPer As Long
Dim iALL As Long, sum As Long, iNoV As Long
'Απόκρυψη πεδίων και των αντίστοιχων ετικετών
For Each c In Forms("data").Controls
If TypeOf c Is CheckBox Then
If Not c.Value Then
Me.Controls(c.Tag).Visible = False
Me.Controls(c.Tag & "_Ετικέτα").Visible = False
sum = sum + Me.Controls(c.Tag).Width
iNoV = iNoV + 1
End If
iALL = iALL + 1
End If
Next
'Αρχικές τιμές προσδιορισμού της θέσης των ορατών πεδίων
iLeft = 57
Select Case iALL - iNoV
Case 1
iPer = 0
Case 2
iPer = sum / 2
Case Else
iPer = sum / (iALL - iNoV - 1) + 10
End Select
For Each c In Me.Section(0).Controls
If TypeOf c Is TextBox Then
If c.Visible Then
c.Move iLeft
Me.Controls(c.Name & "_Ετικέτα").Move iLeft
iLeft = iLeft + c.Width + iPer
End If
End If
Next
End Sub
Για να λειτουργήσει ο κώδικας:
1. Στα πλαίσια ελέγχου η ιδιότητα «Ετικέτα» (Tag) θα πρέπει να έχει τιμή το όνομα του πεδίου στην έκθεση (πχ afm).
2. Το όνομα των ετικετών της έκθεσης θα είναι ίσο με το όνομα του αντίστοιχου πεδίου ακολουθούμενο από τη συμβολοσειρά «_Ετικέτα» (πχ afm_Ετικέτα).
Φιλικά /Γιώργος