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

VB 6 + DataBase


tab0u

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

Καλημέρα παίδες και χρόνια πολλά!

Έχω ένα πρόβλημα με μία εργασία στην Vb.Δεν θέλω να μου δώσετε την λύση της εργασίας

,απλά μία βοήθεια σε συντακτικό λάθος.

Λοιπόν θέλω να περνάω τα περιεχόμενα μιας βάσης σε ένα txtBox.Γνωρίζω ότι γίνεται από το παράθυρο Properties με τα πεδία DataSource και DataField αφού έχω δημιουργήσει datacontrol.

Το πρόβλημα μου είναι ότι θέλω να τα ορίσω μέσω κώδικα και όχι από τα Properties.Οπότε

έχω γράψει τα εξής:

 

Private Sub Form_Load()

Set txtContID.DataSource = "Data1" <-**

txtContID.DataField = "[Contact ID]"

Set txtLastName.DataSource = "Data1"

txtLastName.DataField = "[Last Name]"

Set txtFirstName.DataSource ="Data1"

txtFirstName.DataField = "[First Name]"

Set txtPhone.DataSource ="Data1"

txtPhone.DataField = "Phone"

End Sub

 

Το θέμα είναι ότι πρέπει να γράφω κάτι λάθος διότι μου βγάζει μήνυμα "Object Recuired" και μου τονίζει το σημείο που σας δείχνω με **

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η DataSource property του TextBox "κοιτάει" σε κάποιο Data control που έχεις φτιάξει.

 

Συνεπώς για αρχή, αν δεν κάνω λάθος, δεν ορίζεις String με το όνομά του αλλά το ίδιο το control, το οποίο πρέπει να υπάρχει πριν το καλέσεις.

 

Σε ποιά φάση το δημιουργείς το Data control σου? Αν ήδη έχει φτιαχτεί στη φάση που κάνεις load τη φόρμα σου έχει καλώς, εναλλακτικά θα πρέπει να το ορίσεις εσύ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Υποθετω οτι εχεις πεταξει πανω στην φορμα ενα data control που εχει το ονομα Data1...Αυτο που χρειαζεται να κανεις ειναι πολυ απλο, βγαλε τα quotes για να περνας στο DataSource property το Data Control Object και οχι String οπως κανεις τωρα π.χ.

 

Set txtContID.DataSource = Data1

 

Ελπιζω να βοηθησε

 

Και χρονια πολλα σε ολους :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όντως έχω πετάξει πάνω στη φόρμα ένα data control με όνομα Data1.Δοκίμασα αυτό που μου προτείνεις φίλε isim αλλά μου βγάζει μήνυμα λάθους"type mismatch".

Μήπως πρέπει να δηλώσω κάπως το Data1 όπως προτείνει ο vagpap? Ευχαριστώ για τις απαντήσεις σας!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Βρηκα αυτο στο MSDN:

 

Note Two older controls, the Data control and RemoteData control, can be used as data sources, however you cannot set the DataSource property of another control or object to either of these controls at run time. For example, the following code will fail:

 

Set Text1.DataSource = Data1 ' Will fail! You can't set DataSource at

' run time to an intrinsic Data control.

 

To use either the Data control or RemoteData control as a data source, you can set the DataSource property of bound controls at design time only.

 

οποτε αυτο που θες δεν γινεται

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωχ δεν το ήξερα!Να σαι καλά isim!Με γλύτωσες από πονοκέφαλο ημερών.Ευχαριστώ πολύ!

 

EDIT:Δεν ξέρω αν ισχύει αυτό που βρήκα,δεν το δοκίμασα ακόμη.

 

Visual Basic 6 is the first VB version that lets you programmatically change the DataSource property at runtime, for example to point to another ADO Data control or another ADO Recordset.

 

However, when you assign the new DataSource property VB immediately checks that the DataField and DataMember properties are valid. This means, for example, that if the new data source doesn't expose a field with the same name as the current value of the DataField property, you get error Error 545 - Unable to bind to field or DataMember: 'fieldname'.

 

Fortunately, you can work around this problem by simply setting the FieldName property to a null string before setting the DataSource property, and then assign it the new value:

 

 

' have Text1 point to another Data control

Text1.DataField = ""

Set Text1.DataSource = Adodc2

Text1.DataField = "City"

 

όχι οτι με βοηθάει στη εργασία μου αλλά ίσως τελικά να μπορεί να γίνει η αλλαγή data control σε χρόνο εκτέλεσης

 

Edit2:

Ξέρω οτι αρχίζω και γίνομαι ενοχλητικός,αλλά δεν με βοηθάει η ασχετοσύνη μου:(

Πλέον έχω το εξής πρόβλημα στον ακόλουθο κώδικα(τα αντίστοιχα DataSource είναι ορισμένα από properties):

 

Option Explicit

 

Private Sub Form_Load()

Data1.DatabaseName = "D:\Program Files\Microsoft Visual Studio\VB98\Contacts.mdb"

Data1.RecordSource = "Contacts"

Data1.Refresh

 

txtContID.DataField = "Contacts.[Contact ID]"

txtLastName.DataField = "Contacts.[Last Name]"

txtFirstName.DataField = "Contacts.[First Name]"

txtPhone.DataField = "Contacts.[Phone]"

 

End Sub

 

Όταν προσπαθώ να το τρέξω μου εμφανίζει το εξής: "Unable to bind to field or DataMember:'Contacts.[Contact ID]' "

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Set txtContID.DataSource = Data1.Database

txtContID.DataField = "[Contact ID]"

Set txtLastName.DataSource = Data1.Database

txtLastName.DataField = "[Last Name]"

Set txtFirstName.DataSource = Data1.Database

txtFirstName.DataField = "[First Name]"

Set txtPhone.DataSource = Data1.Database

txtPhone.DataField = "[Phone]"

 

 

des an sou pezi etsi

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Φίλε sotospez καταρχάς σε ευχαριστώ για το ενδιαφέρον και την βοήθεια.

Μου βγάζει μήνυμα λάθους "type mismatch" τονίζοντας μου το Data1.Database με κίτρινο χρώμα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Άμα θέλεις απλα να εμφανίσεις τα περιεχομενα δοκίμασε αυτο:

 

 

Private Sub Form_Load()

Data1.DatabaseName = "D:\Program Files\Microsoft Visual Studio\VB98\Contacts.mdb"

Data1.RecordSource = "Contacts"

Data1.Refresh

 

txtContID.text = data1.recordset!contactID

txtLastName.text = data1.recordset!Last Name

txtFirstName.text = data1.recordset!First Name

txtPhone.text = data1.recordset!Phone

 

End Sub

 

Αυτό πρέπει να εμφανίζει τα περιεχόμενα της πρώτης εγγραφης του recordset.

 

Δεν νομίζω να μπορείς να τα κάνεις edit ομως έτσι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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