lepass_7 Δημοσ. 25 Μαΐου 2008 Δημοσ. 25 Μαΐου 2008 Γεια σας παιδια, Εχω ενα πρόβλημα με ένα combobox το οποίο είναι συνδεδέμενο με μια βάση δεδομένων και δείχνει τα επίθετα των records μου. Θέλω όταν πατάω σε ένα συγκεκρίμενο επίθετο να μου εμφανίζει σε ένα textbox το όνομα της συγκεκριμένης καταχώρησης. Αυτό που σκέφτηκα μέχρι στιγμής(αλλα δεν μπορώ να το υλοποιήσω, διότι δεν ξέρω καλά SQL) είναι: Πατώντας ένα συγκεκριμένο επίθετο πάιρνω τον αριθμό(αυτός ο αριθμός είναι η σειρά που βρίσκεται το επίθετο στην βάση μου) από το combobox και στην συνέχεια να βάλω το text box να πάρει ως τιμή το όνομα που βρίσκεται στην στηλη namecus(έτσι ονόμασα την στήλη με τα ονόματα στην βάση μου) και στην σειρά με τον αριθμό που έχω. Ποιο κάτω δίνω τον κώδικα που έχω φτιάξει για αυτό το κομμάτι μέχρι στιγμής: Private Sub cboCustomers_Click() Dim x As Integer Dim k As String x = cboCustomers.ListIndex k = customerADO.Recordset(x)!namecus '-->Κατα την ' απασφαλμάτωση παίρνω μήνυμα λάθους εδώ txtName.Text = k cboCustomers.Refresh End Sub Έχει κάποιος καποια ιδέα;
Apoll Δημοσ. 25 Μαΐου 2008 Δημοσ. 25 Μαΐου 2008 Αν και δεν ασχολούμαι με VB μήπως σου λείπει η σύνδεση με την βάση δεδομένων; Επίσης "controlname".SelectedValue είναι αυτό που θες από το control. Και ρίξε και ένα CType σε αυτό για να είσαι σίγουρος ότι θα σου βγει int και όχι string.
lepass_7 Δημοσ. 25 Μαΐου 2008 Μέλος Δημοσ. 25 Μαΐου 2008 Δεν υπάρχει πρόβλημα με την βάση, το combobox διάβαζει από την βάση δεδομένα από την στήλη surname, δηλάδη μου εμφανίζει τα επίθετα. Δεν καταλαβα ακριβως τι εννοεις να κάνω...
Apoll Δημοσ. 25 Μαΐου 2008 Δημοσ. 25 Μαΐου 2008 To combo πέρνει 2 τιμές αν το έχεις ρυθμίσει κανονικά. Value και Name. Value είναι αυτό που σου επιστρέφει όταν το επιλέξεις, Name αυτό που εμφανίζει. "comboboxname".SelectedValue είναι η τιμή Value του combo που είναι integer όπως έγραψες παραπάνω. Το combo όμως επιστρέφει string. Για καλό και για κακό, κάνεις cast την επιστρεφόμενη τιμή σε integer και έχεις αυτό που θέλεις για να ψάξεις στην βάση δεδομένων. Επίσης είδα μερικά λάθη α) Η Sub μάλλον είναι λάθος. Μήπως χρειάζεσαι την SelectedValueChanged αντί τις Click? β) Το combobox δεν έχει property .listindex
lepass_7 Δημοσ. 26 Μαΐου 2008 Μέλος Δημοσ. 26 Μαΐου 2008 Ευχαριστω που απάντησες τόσο γρήγορα. Αλλά στην Visual Basic το combobox έχει property την listinex έτσι όπως το έγραψα δίνει στην μεταβλητή Χ ένα αριθμό integer, δηλαδή αν έχω 10 επαφές μέσα στο combobox και επιλέξω την πρώτη τότε η Χ παίρνει την τιμή 0 και αν επιλέξω την τελευταία παίρνει την τιμή 9. Ο λόγος που επέλεξα το event click() ειναι διότι θέλω να μου εμφανίζει το αποτέλεσμα που θέλω όταν πατάω στο συγκεκριμένο. Δεν ξέρω αν κατάλαβες ακριβώς τι θέλω να κάνω, βασικά με αυτό το κώδικα καταφέρνω να πάρω ανάλογα με την επιλογή μου την γραμμή( με τον ακέραιο Χ) οπού βρισκεται η συγκεκριμένη καταχώρηση στον πίνακα της βάσης μου.
Apoll Δημοσ. 26 Μαΐου 2008 Δημοσ. 26 Μαΐου 2008 Κάπου έχεις μπερδευτεί μάλλον. Το event click είναι για όταν κάνεις κλικ στο control. Στην περίπτωση του combo το event click ανοίγει το μενού των επιλογών και δεν επιλέγει ακόμα τιμή από το μενού. Αυτό είναι σε δεύτερο κλικ και φυσικά έχει ήδη τρέξει το event (γι αυτό και πέρνεις και λάθος). Το event που θες είναι το SelectedValueChanged. Από Null στην αρχή πέρνει τιμή αυτή που θα πατήσεις την πρώτη φορά και εκτελείτε κάθε φορά που το τρέχεις. (Βάλε και μια γραμμή στην αρχή που να λέει --Please Select -- ως προεπιλογή). Επίσης παρατήρισα ότι αναφέρεσαι στην VB6, μιάς και μου ήταν περίεργο πως έχεις ListIndex property σε combo. Αυτό έχει φύγει με την έλευση της .ΝΕΤ εδώ και κάτι αιώνες. (Χρησιμοποιούν SelectedIndex και αυτό είναι μόνο αν έχεις καμμιά Case Select στον κώδικα ή θες να κάνεις υπολογισμούς, διαφορετικά Value για να δουλεύει με βάσεις). Θα σε συμβούλευα να κάνεις τα εξής. α) Value στο combo να βάλεις τη στήλη που έχει το κλειδί των εγγραφών του πίνακα. (ID κλπ) β) Χρησιμοποίησε το .SelectedValue για να κάνεις το ψάξιμο μέσα στην SQL και όχι το ListIndex. γ) Πέτα την VB6 και πιάσε την VB.NET 2008 μπας και δεις φως. (Άντε VB.NET 2005).
lepass_7 Δημοσ. 26 Μαΐου 2008 Μέλος Δημοσ. 26 Μαΐου 2008 Ναι το προβλημα μου ειναι στην SQL επειδη ελάχιστα ξέρω από SQL δεν μπορώ να κάνω ψάξιμο... αν μπορείς να με βοηθήσεις σε αυτό καλώς αλλιώς ευχαριστώ για τα υπόλοιπα!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.