www.MsAccess.gr

List Box / Πλαίσιο Λίστας

•There are no translations available.•

Βάση Διπλών ListBox  Εργαλείο Υπολογισμού Εγκυρότητας ΑΦΜ download  

(Στο Δεύτερο το δεξιότερο ListBox με δεξί κλικ επιπλέον επιλογές)

Βάση Για ListBox Αποθήκευσης πολλαπλών επιλογών Εργαλείο Υπολογισμού Εγκυρότητας ΑΦΜ download 


 

Παρακάτω αναφέρομαι αναλυτικά στο πλαίσιο λίστας και στην εφαρμογή του με παραδείγματα και κώδικα σε 2 αρχεία mdb. Για το πλαίσιο Λίστας αναφέρω απόψεις και εύκολα κάποιος θα καταλάβει την χρηστικότητα του και γιατί να γίνει όπως το αναφέρουμε.Ενα mdb που παραθέτουμε είναι από απάντηση που δώσαμε στο FreeStuff και συγκεκριμένα στο Link εδώ .

Το αντικείμενο Πλαίσιο Λίστας εμφανίζει μία λίστα από αντικείμενα-Εγγραφές τα οποία ο χρήστης μπορεί να επιλέξει ένα ή και περισσότερα του ενός.

Το πρώτο αντικείμενο στην Λίστα έχει δείκτη 0, το δεύτερο δείκτη 1 κοκ. Αν δεν υπάρχει κανένα αντικείμενο τότε ο δείκτης επιστρέφει -1

Για να μπορούμε να επιλέγουμε παραπάνω από ένα αντικείμενα πρέπει η ιδιότητα MultiSelect / Πολλαπλή επιλογή να είναι απλή ή εκτεταμένη.

ΔΙΑΦΟΡΕΣ ΣΤΟ MULTISELECT

Θα αναφέρουμε την βασική διαφορά του καμιά με απλή-εκτεταμένη (Δεν αναφέρουμε την διαφορά απλή-εκτεταμένη η οποία έχει να κάνει μόνο με τον σύνθετο τρόπο πολλαπλής επιλογής).

Η διαφορά έχει να κάνει με το όταν η ιδιότητα του πολλαπλή επιλογή το Πλαίσιο Λίστας είναι απλή ή εκτεταμένη η τιμή του πλαισίου Λίστας είναι null άσχετα εάν έχουμε επιλέξει τιμή ή όχι.Εαν η ιδιότητα το πολλαπλή επιλογή είναι καμιά τότε μπορούμε να επιστρέψουμε τιμή όπως ένα απλό πλαίσιο κειμένου.

Το βασικό επίσης πρόβλημα είναι τι γίνεται όταν θέλουμε πολλαπλή επιλογή στο πλαίσιο λίστας και αυτές οι επιλογές να διατηρούνται για την συγκεκριμένη Εγγραφή. Πχ. Έχουμε το Πλαίσιο Λίστας Ιδιότητα ενός συναλλασσομένου. Η Ιδιότητα για τον Συναλλασσόμενο Χ θέλουμε να είναι και Προμηθευτής και Πελάτης δηλαδή 2 επιλογές από το πλαίσιο Λίστας. Όταν μετακινηθούμε στον συναλλασόμενο Υ και επιλέξουμε εκεί πχ Πελάτης και Αντιπρόσωπος. Με την επιστροφή μας στον Συναλλασσόμενο Χ θέλουμε να εμφανίσει τις επιλογές που κάναμε. Έτσι προκύπτει λειτουργικό πρόβλημα καθότι το πλαίσιο λίστας δεν αποθηκεύει με αυτόματο τρόπο τις τιμές αλλά με χρήση με κώδικα.

Έχουμε συνηθίσει να χρησιμοποιούμε το πλαίσιο λίστας για επιλογές που θα μας βοηθούν να αναζητούμε εγγραφές. Δηλαδή σαν εργαλείο φίλτρου εγγραφών. Αν είναι η ιδιότητα πολλαπλή επιλογή σε καμιά τότε μπορούμε χωρίς κώδικα να αποθηκεύουμε και την επιλογή μας στο προέλευση στοιχείων ελέγχου.

ΛΥΣΕΙΣ :

Μια λύση στο πρόβλημα μας για αποθήκευση πολλαπλών επιλογών είναι το πλαίσιο λίστας κατ'αρχής να έχει προέλευση στοιχείου ελέγχου (Control Source) ένα πεδίο κειμένου. Το πλαίσιο λίστας θα έχει 2 στήλες με εμφάνιση μόνο της μίας λίστας. Στην πρώτη Λίστα θα είναι το ID και στην 2 στήλη θα έχουμε τις τιμές που θέλουμε να εμφανίζονται. Η αποθήκευση των ID αφού θα είναι παραπάνω του ενός θα αποθηκεύονται με διαχωριστικό πχ το κόμμα ( 1,3,6). Εννοείται ότι η στήλη η δεύτερη με τις τιμές μπορεί να είναι οτιδήποτε καθότι εμείς θα αποθηκεύουμε μόνο τις τιμές της πρώτης στήλης και έτσι δεν υπάρχει περιορισμός για τον τύπο δεδομένων της δεύτερης στήλης.

Σε Πρόγραμμα Demo για να μην αναφερθούμε σε περισσότερο κείμενο εμφανίζεται η υλοποίηση των παραπάνω. Υπάρχει κώδικας που διαβάζει τα διαχωριστικά και κώδικας που γράφει τα διαχωριστικά. Ο Κώδικας είναι ουσιαστικά δικές μας συναρτήσεις και ρουτίνες που λειτουργούν για όλα τα πλαίσια λίστας της ενεργής φόρμας.

Η Λύση να έχουμε για κάθε επιλεγμένο αντικείμενο της λίστας ξεχωριστό σχεσιακό πίνακα που να δημιουργεί για κάθε επιλογή και εγγραφή στον πίνακα αντί για κόμμα και το ID του με την αποθήκευση των επιλογών, μειώνει την ταχύτητα κατά την διάρκεια διαβάσματος της κάθε επιλογή, μεγαλώνει και την βάση, και Θέλει κώδικα SLQ που να κάνει Append στον σχεσιακό πίνακα και Delete σε περίπτωση αποεπιλογής καθώς και RecordSets για διάβασμα των επιλογών . Με απλά λόγια αν επιλέξουμε στην εγγραφή Συναλλασσόμενος με ID Συναλλασσόμενο του 15 ένας άλλος πίνακας πχ ιδιότητες θα έχει 2 στήλες ID Συναλλασσομένου και επιλογή ListBox / Πλαισίου λίστας.

ID     ListBoxItem

15     1

15     3

Δηλαδή ο Συναλλασσόμενος 15 έχει από το πλαίσιο λίστας το ID 1 και 3 επιλεγμένο.

Για να μην αναπτύξω άλλες κουραστικές τεχνικές παρουσιάζω τα demo που έχω κατασκευάσει για τα ListBox. Υπάρχει και η λειτουργία του ΔΕΞΙ ΚΛΙΚ για προσθήκη και διαγραφή στοιχείων στο πλαίσιο λίστας στο Demo Διπλών ListBox.