MetalHead Δημοσ. 5 Ιανουαρίου 2004 Δημοσ. 5 Ιανουαρίου 2004 Εχω μερικα labels (πχ 50, label(i)) και θελω να βαλω στο caption τους τις τιμες των αντίστοιχων θέσεων μιας βασης δεδομενων. Πως μπορω να παιρνω τις τιμες απο την βαση και να τις βαζω στα labels? Το μονο που μπορω να κανω ειναι βαλω ενα command button και με την .movenext να εμφανιζω σε ενα label την επομενη εγγραφη. Δοκίμασα να βάλω την .movenext μεσα σε καποιο δικο μου sub σε μια for..next αλλα μου βγαζει το ακολουθο μύνημα "object variable or With block variable not set". Οταν την χρησιμοποιω σε καποιο ηδη υπαρχον command button δεν μου παρουσιαζει προβλημα. Γιατι γινεται αυτο; Πρεπει να την χρησιμοποιεισω σε καποο δικο μου sub αλλιως δεν με βολευει ετσι οπως ειναι δομημενο το προγραμμα μου. Το εψαξα λιγο αλλα δεν εβγαλα ακρη. Αν μπορουσατε να με βοηθησετε θα το εκτιμουσα πολυ γιατι πρεπει να παραδωσω μια εργασια συντομα αλλα μου μενει αυτο το τελευταιο κομματι της.
RoadHog Δημοσ. 5 Ιανουαρίου 2004 Δημοσ. 5 Ιανουαρίου 2004 Mipos zitas kati san auto?: Gia VB6.0 Katarxin tha prepei na pas Project->References kai na epilekseis to Microsoft ActiveX Data Objects 2.6 Library. An den exeis auti tin ekdosi den peirazei (epelekse p.x. 2.5) To arxio tis Access onomazete "ar.mdb" kai periexei ena pinaka me onoma "array" O pinakas periexei ena mono pedio me to onoma "name". To pedio auto exei 6 alfarithitikes eisagoges (ena,dio,tria,tessera,pente,eksi) I forma periexei 6 Labels se pinaka me to onoma "Label1(i)" [i=1 eos 6] Episis periexei kai ena Command Button me to onoma "Command1" O kodikas ine o eksis: Private Sub Command1_Click() Dim MyConn As ADODB.Connection Dim MyRecSet As ADODB.Recordset Dim i As Integer Set MyConn = New ADODB.Connection MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\ar.mdb" & ";Persist Security Info=False" MyConn.Open Set MyRecSet = MyConn.Execute("SELECT name FROM array") i = 1 Do Until MyRecSet.EOF Label1(i) = MyRecSet.Fields.Item("name").Value i = i + 1 MyRecSet.MoveNext Loop MyConn.Close End Sub Tora an den theleis na patas to koubi gia na fortothei i vasi dedomenwn sta labels kai thes na ginete amesws otan fortwnei i forma, anti gia Command1_Click() stin arxi tou programmatos boreis na valeis Form_Load(). An theleis na sou steilo to *.exe, ton kodika kai to arxeio tis ACCESS dose to mail sou i kapio xoro pou boro na to anevaso sto net. Elpizo na voithisa
RoadHog Δημοσ. 5 Ιανουαρίου 2004 Δημοσ. 5 Ιανουαρίου 2004 Check your mail (Hotmail Account). Exei ena arxio zip pou periexei ta arxeia tis VB gia to programma, ena arxeio *.exe gia na trekseis to programma kai to arxeio tis Access. To programma trexei mia xara sta Windows 98 (First Edition) me ta ADO 2.6.
MetalHead Δημοσ. 7 Ιανουαρίου 2004 Μέλος Δημοσ. 7 Ιανουαρίου 2004 Βοηθησες αρκετα. Σε ευχαριστω. Εχω ομως δυο ακομα ερωτησουλες. 1)Πως μπορω να γραφω στην βαση ? Κατι δοκιμασα αλλα δεν επιασε. 2)Στην βαση εχω εναν πινακα με δυο πεδια (στην περιπτωση μου το ενα θεση μνημης και το αλλο το περιεχομενο της). Πως μπορω δινοντας τιμη για το πρωτο πεδιο να μου επιστρεφει καπου το περιεχομενο του αλλου πεδιου. Επισης για το παραπανω παραδειγμα για να μου εμφανιζει καπου και τα δυο πεδία πρέπει να χρησιμοποιήσω ενα πx Set MyRecSet = MyConn.Execute("SELECT χχχ FROM yyy") για καθε πεδίο ή γινεται και αλλιώς. Τέλος αν μπορειτε να μου προτεινεται καποιο καλο βιβλίο που να περιεχει και διαχείρηση βάσης με VB αναλυτικά. (οχι e-book , δεν με βολεύουν). Ευχαριστώ
RoadHog Δημοσ. 7 Ιανουαρίου 2004 Δημοσ. 7 Ιανουαρίου 2004 Απάντηση στην Ερώτηση 1: Στο παράδειγμα εισάγουμε το Όνομα, Επίθετο και Τηλέφωνο ενός νέου π.χ. Πελάτη. Για την φόρμα θα χρειαστούμε: 1) 3 Labels / Label1=Όνομα, Label2=Επίθετο, Label3=Τηλέφωνο 2) 3 TextBoxes / Onoma, Epitheto, Tilefono 3) 1 CommandButton / Command1 Η Βάση Δεδομένων της ACCESS έχει το όνομα «pi». Περιέχει ένα πίνακα με όνομα «exar». Ο πίνακας αυτός περιέχει 3 πεδία: Onoma, Epitheto, Tilefono. ΠΡΟΣΟΧΗ!: Μην ξεχάσεις να επιλέξεις Project -> References -> MSADO 2.6 Library Κώδικας: Private Sub Command1_Click() Dim rs As New ADODB.Recordset, sql As String sql = "SELECT Onoma, Epitheto, Tilefono FROM exar;" sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\pi.mdb" & ";Persist Security Info=False" rs.Open sql, sConn, adOpenKeyset, adLockOptimistic, adCmdText rs.AddNew rs!Onoma = Onoma.Text rs!Epitheto = Epitheto.Text rs!Tilefono = Tilefono.Text rs.Update rs.Close Set rs = Nothing End Sub Απάντηση στην Ερώτηση 2: Στο παράδειγμα εισάγουμε το Όνομα ενός πελάτη και μας βγάζει το Επίθετό του. Για την φόρμα θα χρειαστούμε: 1) 2 TextBoxes / Tonoma, Tepitheto Η Βάση Δεδομένων της ACCESS έχει το όνομα pdio. Περιέχει ένα πίνακα με όνομα sing. Ο πίνακας αυτός περιέχει 2 πεδία: Onoma, Epitheto. ΠΡΟΣΟΧΗ!: Μην ξεχάσεις να επιλέξεις Project -> References -> MSADO 2.6 Library Κώδικας: Private Sub TOnoma_Change() Dim MyConn As ADODB.Connection Dim MyRecSet As ADODB.Recordset Dim SOnoma, SEpitheto As String Set MyConn = New ADODB.Connection MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\pdio.mdb" & ";Persist Security Info=False" MyConn.Open Set MyRecSet = MyConn.Execute("SELECT Onoma, Epitheto FROM sing") Do Until MyRecSet.EOF SOnoma = MyRecSet.Fields.Item("Onoma").Value SEpitheto = MyRecSet.Fields.Item("Epitheto").Value If TOnoma.Text = SOnoma Then TEpitheto.Text = SEpitheto End If MyRecSet.MoveNext Loop MyConn.Close End Sub Καλή Επιτυχία στην εργασία! P.S.: Δες στο email σου (hotmail). Σου έχω στείλει τα αρχεία της VB, της ACCESS και τα *.exe.
MetalHead Δημοσ. 7 Ιανουαρίου 2004 Μέλος Δημοσ. 7 Ιανουαρίου 2004 Σε ευχαριστω παρα πολυ. Θα τα κοιταξω και αν χρειαστω κατι θα ξαναpostaρω.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.