Εμφάνιση ενός μόνο μηνύματος
  #15  
Παλιά 24-02-10, 01:05
pm4698 Ο χρήστης pm4698 δεν είναι συνδεδεμένος
Όνομα: Παντελής
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-02-2010
Περιοχή: Καβάλα
Μηνύματα: 54
Προεπιλογή

Κατόπιν βοήθειας από τον κο Κωνσταντίνο, ανέβασα το συνημμένο αρχείο το οποίο λειτουργεί ως εξής:
(Σημείωση - λειτουργεί μόνο το πρώτο σύνθετο πλαίσιο σε σχέση με την αριστερή λίστα).

Δημιουργήθηκε ένα νέο πεδίο στον πίνακα ΕΡΓΑΖΟΜΕΝΟΣ το οποίο ονομάστηκε listboxincluded και η default τιμή του είναι Αληθές.
Σε κάθε σύνθετο πλαίσιο, χρησιμοποιείται ως rowsource ένα query που επιλέγει τα Επώνυμα για τα οποία το listboxincluded είναι Αληθές.
Στο after update του σύνθετου πλαισίου, χρησιμοποιείται ο εξής κώδικας:

Private EmplID As String
'Απενεργοποίηση ειδοποιήσεων της access
Application.SetOption "Confirm Action Queries", False

If Not IsNull(EmplID) Then DoCmd.RunSQL ("UPDATE ΕΡΓΑΖΟΜΕΝΟΣ SET ListBoxIncluded=true WHERE Επώνυμο='" & EmplID & "'")
EmplID = Me.combobox_name.Column(0)
DoCmd.RunSQL ("UPDATE ΕΡΓΑΖΟΜΕΝΟΣ SET ListBoxIncluded=False WHERE Επώνυμο='" & EmplID & "'")

και στο on change event του σύνθετου πλαισίου κρατείται η προηγούμενη τιμή:
EmplID = Me.k1.OldValue

Με αυτό τον τρόπο, το όνομα που θα επιλεγεί από το σύνθετο πλαίσιο, αφαιρείται από την λίστα αλλά δεν εμφανίζεται ούτε στα επόμενα πλαίσια, διότι η τιμή του για το listboxincluded γίνεται False.
Επίσης, στην περίπτωση που κάποιος το μετανιώσει και επιλέξει άλλο όνομα στο σύνθετο πλαίσιο, χρησιμοποιείται η προηγούμενη τιμή του για να τεθεί το πεδίο της listboxincluded σε true κ.ο.κ.

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

Ευχαριστώ
Συνημμένα Αρχεία
Τύπος Αρχείου: zip Δοκιμαστικό.zip (448,9 KB, 14 εμφανίσεις)
Απάντηση με παράθεση