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

VB6 και χειρισμός πεδίων MS Access


Parasight

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

Δημοσ.

Έχω μια ερώτηση η οποία με καίει γιατί έχω ψιλοκολλήσει σε ένα project στη δουλειά, θα εκτιμούσα μια βοήθεια.

 

Αν υποθέσουμε ότι RS είναι ένα recordset, ως γνωστόν χειριζόμαστε κάθε field ενός MS Access table αναφερόμενοι σε αυτό είτε ως RS.[<όνομα field>], είτε ως RS.fields(<αύξων αριθμός field>).

Το ερώτημά μου είναι: Υπάρχει η δυνατότητα να κρατάω το <όνομα field> σε μια μεταβλητή ώστε να ελέγχω το εκάστοτε field με αυτόν τον τρόπο; Πχ έστω ότι ένα table έχει 3 πεδία τα οποία ονομάζονται αντίστοιχα Name, Address, Phone. Μπορώ να έχω μία μεταβλητή τύπου string της οποίας όταν η τιμή είναι "Name" να μπορώ να αναφερθώ στο field Name, κ.ο.κ.; Και πώς θα γίνει αυτό;

 

 

Δεν είμαι σε καμία περίπτωση ο έμπειρος προγραμματιστής όπως καταλάβατε ε:neutral:

 

 

edit: Άκυρο το παραπάνω αίτημα, βρήκα τη λύση "ανακαλύπτοντας" το property Name :)

 

Τώρα όμως έχω ένα άλλο πρόβλημα: Παλεύω εδώ και ώρα χωρίς να τα καταφέρνω να προσθέσω fields στο table της Access. Προσοχή όχι records (γραμμές δλδ, με το AddNew), αλλά fields (στήλες). Έχω βρει και πειραματίζομαι εδώ και πολλή ώρα με την Fields collection του Recordset object αλλά δε βγάζω άκρη. Help please...

Δημοσ.

Dim dbs As Database

Dim fld As Field

Dim tdf As TableDef

 

Set dbs = CurrentDb

Set tdf = dbs.TableDefs("ΌνομαΠίνακα")

Set fld = tdf.CreateField("ΌνομαΠεδίου", dbText)

 

tdf.Fields.Append fld

 

Set fld = Nothing

Set tdf = Nothing

dbs.Close

Δημοσ.

Η ερώτηση είναι αν προσπαθείς με την χρήση DAO ή με την χρήση ADO.

 

Αν χρησιμοποιείς το DAO η προηγούμενη απάντηση είναι η σωστή.

 

Αν όμως προσπαθείς να το κάνεις με ADO, αν και μπορείς να φτιάξεις δικά σου recordsets με το ADO, δεν μπορείς να αλλάξεις ένα πίνακα σε μια βάση έτσι. Θα πρέπει να κάνεις την χρήση του ADOX.

 

 

George J.

Δημοσ.
Dim dbs As Database

Dim fld As Field

Dim tdf As TableDef

 

Set dbs = CurrentDb

Set tdf = dbs.TableDefs("ΌνομαΠίνακα")

Set fld = tdf.CreateField("ΌνομαΠεδίου", dbText)

 

tdf.Fields.Append fld

 

Set fld = Nothing

Set tdf = Nothing

dbs.Close

Ευχαριστώ πολύ, δουλεύει μια χαρά:)

Με τα table definitions δεν ήξερα πώς να το κάνω ακριβώς..

 

Btw εγώ ψάχνοντας χθες βρήκα και άλλον τρόπο, με εντολή SQL.

Δηλαδή:

commstring = "ALTER TABLE <όνομα recordset> ADD COLUMN " & <όνομα νέου field> & " YESNO;"

DBchecklist.Execute commstring

 

(το YESNO επειδή θέλω το field να είναι τύπου Yes/No)

 

...και μου δούλεψε μια χαρά. Αλλά μάλλον θα προτιμήσω τον τρόπο σου, μου φαίνεται πιο "ομαλός":)

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

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

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