![]() |
Μεταφορά περιεχομένου λίστας σε σύνθετο πλαίσιο άλλης φόρμας Καλημέρα σε όλα τα μέλη του forum! Απ' ότι έριξα μια ματιά στο περιεχόμενο, οφείλω να πω ότι κάνετε πολύ καλή δουλειά! Στο θέμα μας τώρα! Έχω μία φόρμα(frm2), στην οποία έχω μία λίστα(list1). Η λίστα είναι κενή και δέχεται τιμές από κομμάτι κώδικα από άλλα μέρη της φόρμας τα οποία χειρίζονται από τον χρήστη. Δηλαδή, ο χρήστης χειρίζεται σύνθετα πλαίσια, πλαίσια κειμένου κτλ και συμπληρώνεται η λίστα. Αυτό που θέλω είναι όταν πατάω ένα κουμπί, να μεταφέρεται το index της λίστας σε έναν κενό πίνακα tbl1. Σε μία άλλη φόρμα, χρησιμοποιώ ένα σύνθετο πλαίσιο, το οποίο θέλω να έχει rowsource το περιεχόμενο του πίνακα tbl1. Ουσιαστικά, θέλω τα περιεχόμενα της λίστας - όταν αυτή συμπληρώνεται να περνάνε με ένα κουμπί ως rowsource ενός σύνθετου πλαισίου μίας άλλης φόρμας(frm2). Πως θα μπορούσα να το κάνω αυτό? Ευχαριστώ! |
Σταύρο είχα κι εγώ τέτοιο θέμα και δημιούργησα έναν πίνακα με δύο πεδία. Το ένα είναι το Αυτόματη Αρίθμηση(paperID) και το άλλο είναι το Author_name. Ο πίνακας ονομάζεται tblPaper ενώ η λίστα ονομάζεται author_list. Δοκιμάζω το παρακάτω για να περάσω τις τιμές του listbox στον άδειο πίνακα αλλά δεν δούλεψε.. Private Sub button_Click() Dim varItem As Variant Dim strCriteria As String Dim strSQL As String Dim strSQL2 As String strSQL = "INSERT INTO tblPaper (Auhor_name) VALUES(" & Me!author_list & ", " If Me!l1.ItemsSelected.Count > 0 Then For Each varItem In Me!author_list strSQL2 = strSQL & Me!author_list.ItemData(varItem) & ");" CurrentDb.Execute strSQL Next varItem End If Exit Sub End Sub Αν τον παραμετροποιήσεις και δουλέψει ρίχτο! |
Βρήκα άλλη προσέγγιση: Με ανοιχτή την φόρμα form1ενώ ανοίγει η φόρμα frm2: Στο click event του button βάζω: Form_form2name.comboboxname.RowSource = Me.listboxname.RowSource Στο Open event της φόρμας form2 βάζω: Me.comboboxname.RowSource = Form_form1name.listboxname.RowSource και δουλεύει μια χαρά. Σκέφτηκα όμως, ότι θα δούλευε καλύτερα το παράδειγμά μου εάν το σύνθετο πλαίσιο το μετέτρεπα σε πλαίσιο κειμένου με rowsource από έναν πίνακα tblPaper. Αυτός ο πίνακας θα γεμίζει με κουμπί από την φόρμα που είναι το listbox. Έτσι, μετατρέπω τη φόρμα μου σε συνεχή και μου βγάζει το ίδιο για όλες τις τιμές της λίστας κάτι που θέλω στην εφαρμογή μου. Δοκίμασα στο on click event του button το εξής: currentdb.execute ("INSERT INTO tblPaper(Lastname) VALUES ('" & me.listboxname& "','" ) ; αλλά μου βγάζει λάθος. Να επισημάνω ότι ο πίνακάς μου έχει δύο πεδία. Ένα είναι αύξων αριθμός και το άλλο είναι το Lastname |
Μήπως πρέπει να βάλω στην παρένθεση, το tblPaper(ID, Lastname) ?Δηλαδή να πρέπει να δηλώσω και τα δύο πεδία?Ή μήπως να αναφερθώ σε στήλες? |
Σταύρο καλησπέρα! Παράθεση:
Φιλικά Τάσος |
Το listbox είναι σε μορφή λίστα τιμών και το γεμίζω με ονόματα μέσω άλλων ερωτημάτων. Επίσης, έχει μία στήλη η οποία είναι και η δεσμευμένη. Άρα όταν πατάω το κουμπί, λογικά θα πρέπει να μου μεταφέρει την μοναδική στήλη που έχει με τα ονόματα στην στήλη Lastname του πίνακα tblPaper αλλά μου βγάζει πρόβλημα |
Καλημέρα! Σταύρο, αν σου είναι εύκολο, επισύναψε μας ένα παράδειγμα για να μπορέσουμε να έχουμε μια πιο πλήρη εικόνα του ζητούμενου σου και να σου δώσουμε την κατάλληλη απάντηση. Φιλικά Τάσος |
1 Συνημμένο(α) Στο συνημμένο φαίνεται αυτό που θέλω. Ο πίνακας tblPaper είναι κενός. Στην μία φόρμα μέσω comboboxes περνιούνται τα ονόματα στην λίστα της ίδιας φόρμας. Έπειτα, πιέζοντας το κουμπί Transfer θέλω να μεταφέρονται οι τιμές της λίστας στο πεδίο Lastname του πίνακα tblPaper. Έπειτα, έχω μία φόρμα η οποία έχει ένα textbox και είναι σε μορφή συνεχούς φόρμας. Το rowsource του textbox θα είναι η στήλη Lastname του μόλις συμπληρωμένου πίνακα tblPaper. και ως συνεχή φόρμα θα μου εμφανίζει κάθε Lastname του tblPaper σε ξεχωριστή εγγραφή. Και κάτι άλλο που δεν ξέρω πως γίνεται..Στον αρχικό πίνακα με τα ονόματα tblNames, έχω άλλα δύο πεδία, τα πεδία Metaforiko και Eksoda. Πως γίνεται στην τελική φόρμα σε κάθε εγγραφή να φαίνονται και οι τιμές των δύο πεδίων που αντιστοιχούν στον πίνακα?(Οι πίνακες tblPaper και tblNames δεν διασυνδέονται) |
ΚΑΛΗΣΠΕΡΑ Παράθεση:
Έχεις 5 (!) comboboxes σε μια φόρμα, απόλυτα ΙΔΙΑ (!!) και φορτώνεις -επιλέγοντας τιμές απο αυτά - μια περιοχή 'λιστα' (όπως την ονομάζεις) και μετά θες το περιεχόμενο της λίστας να πάει στο πεδίο (!!!) Lastname του πίνακα tblPaper Μάλλον δεν τα λες καλά... Νίκος Δ, |
Το συνημμένο αρχείο είναι παράδειγμα αυτουνού που ζητάω.δεν είναι η κανονική εφαρμογή.Το πρόβλημά μου γενικότερα είναι ο τρόπος μεταφοράς του περιεχομένου μιας λίστας που συμπληρώνεται από τον χρήστη, στη στήλη ενός πίνακα, ο οποίος αποτελεί την προέλευση ενός textbox. Συγνώμη αν δεν τα λέω καλά, απλά δεν ξέρω καλά access και προσπαθώ να μάθω |
Καλημέρα στην κοινότητα ! Να σε προτείνω τον εξής κώδικα : Κώδικας: Καλή συνέχεια. Αν δεν μπορείς τα ...ξαναλέμε ! Μέχρι τότε :bye: Νίκος Δ. ΥΣ Διαγραφή δεν πρέπει να γίνεται στις εγγραφές του listBox1 ; |
1 Συνημμένο(α) Καλησπέρα σε όλους! Αγαπητέ φίλε Σταύρο, δες έναν απλό τρόπο στο συνημμένο όπου σε Combobox μιας φόρμας εμφανίζονται οι επιλεγμένες εγγραφές μιας άλλης. ΥΓ. Ο Χρήστος (xele3628iw) έχει στην υπογραφή του "Αυτά που δεν ξέρεις φτιάχνουν μια βιβλιοθήκη που καθένας μας θα ήταν περήφανος να έχει." Ο Γιάννης (nisgia) έχει στην υπογραφή του "Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!" Κανένας μας δεν γεννήθηκε γνωρίζοντας τα πάντα! Νομίζω ότι τα παραπάνω τα λένε όλα... Βάζε τις ερωτήσεις σου στο φόρουμ όποιες κι αν είναι αυτές και να ξέρεις οτι θα σου απαντηθούν. Φιλικά Τάσος |
1 Συνημμένο(α) Καλημέρα ! Για την περίπτωση όπου : Παράθεση:
ΥΣ Στο συννημένο του φίλου μου Τάσου, εμφανίζεται : πως ελέγχεις αν μια φόρμα ειναι ανοιχτή ή όχι και επιπλέον πως επιλέγοντας εγγραφές από μια φόρμα, τις μεταφέρεις σε textbox άλλης φόρμας ! Τάσο και για αυτή την προσφορά σου σε ευχαριστώ ... |
Σας ευχαριστώ όλους για τις απαντήσεις σας! Η τελευταία του Meteora είναι πιστεύω μία πολύ καλή λύση και ταιριάζει σε αυτό που ζητάω. Μερικές τελευταίες ερωτήσεις.. 1)Εάν δεν θέλω να διαγράφω τη λίστα, λογικά παραλείπω τη γραμή cmdDeleteListItems.( Ούτως ή άλλως η λίστα καθαρίζει όταν κλείσω και ξανανοίξω τη φόρμα! Στο παράδειγμά μου πρέπει να βάλω στην τελική φόρμα που τραβάει δεδομένα από τον πίνακα tblPaper (frmPaper) ένα κουμπί το οποίο να καθαρίζει τον πίνακα έτσι ώστε την επόμενη φορά να μπουν άλλα ονόματα στην λίστα και όχι να μπουν από κάτω μαζί με τα προηγούμενα. Πως θα μπορούσα να το κάνω αυτό? 2) Όσον αφορά τον πίνακα, στην φόρμα, μου εμφανίζει και μία κενή εγγραφή στο τέλος(φαντάζομαι είναι αυτή που βρίσκεται ως κενή καινούργια στον πίνακα). Πως θα μπορούσα να το κάνω να μην εμφανίζεται στη συνεχή φόρμα? 3) Μπορώ να περάσω στην τελική φόρμα(frmPaper) και άλλα πεδία του αρχικού πίνακα?Δηλαδή, εάν επιλέξω να μπουν στη λίστα 4 ονόματα και μεταφερθούν στη συνεχή φόρμα, θέλω σε κάθε εγγραφή να εμφανίζεται και η αντίστοιχη τιμή των πεδίων Metaforiko και Eksoda του αρχικού πίνακα για παράδειγμα. Ευχαριστώ πολύ! |
1 Συνημμένο(α) Καλημέρα Αγαπητέ Σταύρο τα δυο πρώτα ερωτήματά σου είχαν λύση. Το τρίτο για να γίνει πρέπει να αλλάξεις δομή στους πίνακες! Η FormaPaper πατά πάνω στον πίνακα tblPaper που έχει ΜΟΝΟ μια πληροφορία (πεδίο LastName). Δες τι θες και ...στο πως, θα βοηθηθείς απο το Forum... Με εκτίμηση/ Νίκος Δ. |
Ευχαριστώ πολύ για την απάντηση!Το ψάχνω για το πως θα περάσω τα πεδία που θέλω αλλά θέλω μία μικρή βοήθεια: Πώς περνάω τιμές με την AddItem σε συγκεκριμένη στήλη της λίστας; Πως μπορώ δηλαδή να δηλώσω το column της λίστας που θέλω να κάνω additem? Ευχαριστώ |
1 Συνημμένο(α) Αγαπητέ Σταύρο, δες μια διαχείριση όπου στην FormaPaper εμφανίζεται ένα πεδίο επιπλέον (το μέσο μεταφοράς!). Με τον ίδιο τρόπο εμφανίζεις και όποια άλλα πεδία του πίνακα TblNames θες. Έχω επίσης αλλάξει τον τρόπο διαγραφής των περιεχομένων του πίνακα tblPaper. Αυτά ! Φιλικά/ Νίκος Δ. |
Φίλε Meteora σε ευχαριστώ πολύ για την συνάρτηση DLookUp. Πραγματικά με βοήθησε πολύ και σε άλλα σημεία της βάσης μου. Το πρόβλημά μου λύθηκε! Ευχαριστώ! |
| Η ώρα είναι 19:03. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.