Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

Îåêßíçóå áðü ôï ìÝëïò Dataman. Τελευταία δημοσίευση από το μέλος KelMan στις 29-07-2008, 11:02. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  28-07-2008, 10:47 43725

    Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Χαιρετώ την ομάδα.

    Αναπτύσω εφαρμογές σε Visual Basic 6 και διαχειρίζομαι βάσεις δεδομένων με DAO. Πρόσφατα ξεκίνησα ανάπτυξη σε περιβάλλον 2008 και προσπαθώ σε αυτά τα λίγα βήματα που έχω κάνει να διαχειριστώ μία βάση δεδομένων ACCESS 2003 με ADODB.

    Καταρχήν να τονίσω ότι οι βάσεις που δουλεύω πάντα είναι σε ACCESS, σε τοπικό δίκτυο και με ενδιαφέρει η διαχείριση τους (Διάβασμα, Γράψιμο, Διόρθωση) και πολύ συμαντικό για εμένα η ταχύτατη εμφάνιση σε GridControl (κάτι που στο περιβάλλον της VB6 και με DAO το είχα στο Έπαρκο).

    Στην αρχή είχα το δίλημα στο τι τρόπο διαχείρισης να επιλέξω (ADODB ή ADO.NET) και μετά από διάβασμα για τις διαφορές επέλεξα τελικά το ADODB (ελπίζω να διάλεξα σωστά).

    Τώρα τα προβλήματα που αντιμετωπίζω και όσο κι εάν έψαξα δεν βρήκα απάντηση είναι τα εξής:

    Α) Ενώ φορτώνω κανονικά την βάση (από Module) στην φόρμα προβολής (Form1) εμφανίζονται κανονικά τα πεδία, δουλεύει κανονικά η .MoveNext(), στην εντολή .MovePrevious() μου επιστρέφει το σφάλμα (Η λειτουργία δεν επιτρέπεται σε αυτό το περιβάλλον.)

    Β) Η εντολή .RecordCount δεν μου παρουσιάζει το πλήθος των εγγραφών του πίνακα.

    Γ) Πιο εργαλείο να χρησημοποιήσω για να παρουσιάζω ταχύτατα της εγγραφές ενός πίνακα χρησιμοποιώντας την εντολή Like, πχ. στην VB6 χρησιμοποιούσα το Data Control το οποίο το είχα συνδεσει με το DBGrid Control. Το Control αυτό εμφάνιζε εγγραφές ταχύτατα διότι δεν εμφάνιζε όλη την βάση αλλά μόνο όσες γραμμές είχε. Υπάρχει παρόμοιο εργαλείο στην VB2008?

    Σας παραθέτω εικόνα με την σύνταξη του κώδικα και να σημειώσω ότι το λειτουργικό είναι τα Windows Vista.
    Κώδικας

    Ευχαριστώ για τον χρόνο σας.

  •  28-07-2008, 12:16 43735 σε απάντηση της 43725

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Γεια σου. Έχω να κάνω 2 καλοπροαίρετες παρατηρήσεις. Smile

    Dataman:

    Καταρχήν να τονίσω ότι οι βάσεις που δουλεύω πάντα είναι σε ACCESS, σε τοπικό δίκτυο και με ενδιαφέρει η διαχείριση τους (Διάβασμα, Γράψιμο, Διόρθωση)


    Μήπως πρέπει να σκεφτείς τη μετάβαση σε SQL EXpress. Καταρχήν είναι δωρεάν και θα δεις τεράστιες διαφορές στην ταχύτητα. Επίσης για Multi-user εφαρμογές η Access είναι ακατάλληλη αφού τα κλειδώματα είναι συνεχή. Επίσης  μια για πάντα θα ξεφορτωθείς το office και το κόστος των εγκαταστάσεων του.

    Dataman:

    Στην αρχή είχα το δίλημα στο τι τρόπο διαχείρισης να επιλέξω (ADODB ή ADO.NET) και μετά από διάβασμα για τις διαφορές επέλεξα τελικά το ADODB (ελπίζω να διάλεξα σωστά).


    Κατά την άποψη μου διάλεξες λάθος. Μια και κάνεις την κίνηση να γυρίσεις σε .net πρέπει κατά τη γνώμη μου να εστερνιστείς το disconnected μοντέλο του ado.net. Ισως έχει μεγαλύτερη καμπύλη εκμάθησης αλλά τα κέρδη θα είναι πολλαπλά.

    Αυτά τα ολίγα καλή δύναμη

    Manos
  •  28-07-2008, 14:15 43740 σε απάντηση της 43735

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Θα συμφωνήσω και στα δύο, αλλά ειδικά στο πρώτο. Η access έχει κακό παρελθόν με το να κάνει corrupt δεδομένα όταν χρησιμοποιούν τη βάση περισσότεροι από ένας χρήστες. Επίσης, οι δυνατότητες για transaction locking είναι σαφώς μικρότερες (νομίζω υποστηρίζει μόνο ένα mode), και το γεγονός ότι και η ίδια η Microsoft έχει άρει την υποστήριξή της δείχνει ότι δε θα ήταν και η καλύτερη επιλογή.

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  28-07-2008, 14:43 43741 σε απάντηση της 43740

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Θα λάβω σοβαρά υπόψιν τις απόψεις σας (σχετικά με τον SQL Server) στην συνέχεια της πορείας μου στην VB2008.

    Ως αναφορά όμως τα προβλήματα που αντιμετωπίζω στην παρούσα φάση, υπάρχει κάτι?
  •  28-07-2008, 22:45 43756 σε απάντηση της 43741

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Φταίει ο τρόπος που έχεις ανοίξει τη βάση. Χρησιμοποιείς έναν "forward-only, read-only cursor" που σημαίνει ότι το μόνο που μπορείς να κάνεις είναι το MoveNext. Θα πρέπει να ανοίξεις τη βάση με άλλον τρόπο για να μπορείς να πηγαίνεις μπροστά-πίσω και να ξέρεις πόσα είναι τα πεδία. Παραδείγματα τέτοιου κώδικα θα βρεις αρκετά σε VB6 αλλά σε VB.NET όχι. Καλύτερα να ασχοληθείς με το ADO.NET. Πραγματικά δεν χρησιμεύει πουθενά το ADO στον κόσμο του .NET Framework, εκτός ίσως από σενάρια migration. Για το ADO.NET θα βρεις άφθονο υλικό, όπως εδώ: http://msdn.microsoft.com/en-us/vbasic/bb466226.aspx (στην ενότητα Forms over Data Video Series). Τα περισσότερα από αυτά που αναφέρονται εκεί ισχύουν τόσο για την Access, όσο και για τον SQL Server.


    Vir prudens non contra ventum mingit
  •  29-07-2008, 10:31 43764 σε απάντηση της 43741

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Dataman:
    Θα λάβω σοβαρά υπόψιν τις απόψεις σας (σχετικά με τον SQL Server) στην συνέχεια της πορείας μου στην VB2008.

    Ως αναφορά όμως τα προβλήματα που αντιμετωπίζω στην παρούσα φάση, υπάρχει κάτι?


    Συνεχίζω τις καλοπροαίρετες παρατηρήσεις μου Big Smile

    Αφού τώρα ξεκινάς επιμένω να πετάξεις την ADO τεχνολογία και να δουλέψεις με ADO.NET. Θα σου προκαλεί συνέχεια προβλήματα. Είναι κρίμα να φτιάχνεις κάτι νέο from scratch και να βασίζεσαι σε μια τεχνολογία που ουσιαστικά έχει πεθάνει εδώ και αρκετά χρόνια. Προσωπικά δεν ξέρω κάποιο Project σε .net που χρησιμοποιεί την παλιά κλασσική ado

    Manos
  •  29-07-2008, 10:46 43766 σε απάντηση της 43756

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Ευχαριστώ KelMan, μερικές φορές η μετάβαση από ένα σύστημα σε ένα άλλο (DAO -> ADO) θέλει χρόνο και αλλαγή του τρόπου σκέψης.

    Μόλις πρόσθεσα τις εντολές:
             DBR_Rcs.LockType = LockTypeEnum.adLockOptimistic
             DBR_Rcs.CursorType = CursorTypeEnum.adOpenKeyset
    δούλεψε κανονικά.

    Επειδή με βάζετε σε σοβαρή σκέψη σχετικά με την μετάβαση σε SQL αντί της ACCESS και δεδομένου ότι υπάρχει αρκετή δουλειά σε βάσεις δεδομένων ACCESS, ηθελα να ρωτήσω εάν υπάρχει τρόπος (tools) για την μεταφορά των βάσεων (δομή και στοιχείων) σε SQL Server, ή θα πρέπει να φτιάξω πρόγραμμα που να διαβάζει και να περνά τα data που έχω σε βάση SQL που θα θα έχω φτιάξει την δομή εγώ;

    Επίσης, εάν και έχει απαντηθεί (εν μέρη), γιατί να επιλέξει κάποιος που σχεδιάζει εφαρμογές για τοπικό δίκτυο το ADO.NET αντί του ADODB, ποιες είναι οι διαφορές;
  •  29-07-2008, 10:52 43768 σε απάντηση της 43766

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Dataman:

    Επειδή με βάζετε σε σοβαρή σκέψη σχετικά με την μετάβαση σε SQL αντί της ACCESS και δεδομένου ότι υπάρχει αρκετή δουλειά σε βάσεις δεδομένων ACCESS, ηθελα να ρωτήσω εάν υπάρχει τρόπος (tools) για την μεταφορά των βάσεων (δομή και στοιχείων) σε SQL Server, ή θα πρέπει να φτιάξω πρόγραμμα που να διαβάζει και να περνά τα data που έχω σε βάση SQL που θα θα έχω φτιάξει την δομή εγώ;


    Δες την συζήτηση Μετατροπή MDB σε MDF

    Manos
  •  29-07-2008, 11:00 43769 σε απάντηση της 43764

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    manosB:

    Αφού τώρα ξεκινάς επιμένω να πετάξεις την ADO τεχνολογία και να δουλέψεις με ADO.NET. Θα σου προκαλεί συνέχεια προβλήματα. Είναι κρίμα να φτιάχνεις κάτι νέο from scratch και να βασίζεσαι σε μια τεχνολογία που ουσιαστικά έχει πεθάνει εδώ και αρκετά χρόνια. Προσωπικά δεν ξέρω κάποιο Project σε .net που χρησιμοποιεί την παλιά κλασσική ado


    Ευχαριστώ για τις παρατηρήσεις και επι την ευκαιρία θα ήθελα να ρωτήσω εάν με την ADO.NET θα μπορούσα να σχεδιάσω εφαρμογή με τον τρόπο που το κάνω τώρα (γράφοντας κώδικα) ή με την μέθοδο του Wizard όπως βλέπω στο Video Tutorials της Microsoft.
    Προσωπικά θεωρώ ότι ο προγραμματιστής περνά πρώτα από την εγγραφή κώδικα προκειμένου να κατανοήσει την φιλοσοφία και την συμπεριφορά της γλώσας προγραμματισμού και κατόπιν να περάσει σε Visual προγραμματισμό για να κερδίσει απλά χρόνο.
  •  29-07-2008, 11:02 43770 σε απάντηση της 43766

    Απ: Σύνδεση βάσης ACCESS 2003 με ADODB σε Visual Basic 2008

    Υπάρχουν αρκετοί τρόποι για να γυρίσεις μια Access βάση σε SQL Server, νομίζω γίνεται και μέσα από την Access (από τη 2002 και πάνω) με έναν Wizard που έχει. Προσοχή: Δεν είναι υποχρεωτικός ο SQL Server για να δουλέψεις με ADO.NET. Το ADO.NET δουλεύει μια χαρά και με Access. Απλά η Access ΔΕΝ είναι database server, πράγμα που είναι ο SQL Server, έστω και στην Express έκδοση.

    Γενικά πάντως, το ADO.NET είναι πολύ πιο scalable από το ADO και πολύ πιο ευέλικτο. Scalable γιατί σε υποχρεώνει να φέρεις τοπικά τα data να τα επεξεργαστείς και να τα στείλεις πάλι πίσω. Με αυτόν τον τρόπο δεν διατηρείς ανοιχτά connections και δεν κλειδώνεις τις εγγραφές, ωστόσο θα πρέπει να διαχειριστείς τις περιπτώσεις conflicts (πάω να κάνω update κάτι που κάποιος άλλος έχει κάνει delete). Επίσης, το ADO.NET είναι πιο ευέλικτο γιατί δεν είναι black-box όπως το ADO. Στο ADO όταν λες "update" ένας θεός μόνο ξέρει τι κάνει το engine. Στο ADO.NET μπορείς να καθορίσεις πλήρως τα statements. Τέλος, με το ADO.NET πλεόν δεν χρειάζεται να γράφεις τον ίδιο και τον ίδιο κώδικα αφού μπορείς να χρησιμοποιήσεις κάποιο από τα πολλά ORM που υπάρχουν.


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems