Προς το περιεχόμενο

VB & Access


MetalHead

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω μερικα 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 αλλιως δεν με βολευει ετσι οπως ειναι δομημενο το προγραμμα μου. Το εψαξα λιγο αλλα δεν εβγαλα ακρη. Αν μπορουσατε να με βοηθησετε θα το εκτιμουσα πολυ γιατι πρεπει να παραδωσω μια εργασια συντομα αλλα μου μενει αυτο το τελευταιο κομματι της.

Δημοσ.

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 :D

Δημοσ.

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.

Δημοσ.

Βοηθησες αρκετα. Σε ευχαριστω.

Εχω ομως δυο ακομα ερωτησουλες. 1)Πως μπορω να γραφω στην βαση ? Κατι δοκιμασα αλλα δεν επιασε. 2)Στην βαση εχω εναν πινακα με δυο πεδια (στην περιπτωση μου το ενα θεση μνημης και το αλλο το περιεχομενο της). Πως μπορω δινοντας τιμη για το πρωτο πεδιο να μου επιστρεφει καπου το περιεχομενο του αλλου πεδιου. Επισης για το παραπανω παραδειγμα για να μου εμφανιζει καπου και τα δυο πεδία πρέπει να χρησιμοποιήσω ενα πx Set MyRecSet = MyConn.Execute("SELECT χχχ FROM yyy") για καθε πεδίο ή γινεται και αλλιώς.

Τέλος αν μπορειτε να μου προτεινεται καποιο καλο βιβλίο που να περιεχει και διαχείρηση βάσης με VB αναλυτικά. (οχι e-book , δεν με βολεύουν).

Ευχαριστώ

Δημοσ.

Απάντηση στην Ερώτηση 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.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...