BUG: "σφάλμα σύνταξης στο INSERT INTO..." του ADO Recordset.Update

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 189220 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Συμπτώματα

Κατά την κλήση της μεθόδου AddNew και στη συνέχεια καλέστε τη μέθοδο Update ενός αντικειμένου Recordset, επιστρέφεται το ακόλουθο μήνυμα λάθους:
Υπηρεσία παροχής Microsoft OLE DB για προγράμματα οδήγησης ODBC, σφάλμα '80040e21'
[Microsoft][Η Microsoft Access 97 προγράμματος οδήγησης ODBC] Συντακτικό σφάλμα στον όρο INSERT INTO πρόταση.
Χρησιμοποιώντας το πρόγραμμα οδήγησης ODBC της Microsoft Access version4.00.4202.00 ή νεότερη έκδοση, το μήνυμα λάθους είναι:
Σφάλμα χρόνου εκτέλεσης '-2147467259(80004005) ':
[Microsoft][Πρόγραμμα οδήγησης Microsoft Access ODBC]Συντακτικό σφάλμα στην πρόταση INSERT INTO.

Αιτία

Αυτό το σφάλμα παρουσιάζεται, εάν τα παρακάτω είναι αληθές:
  • Το CursorType είναι adOpenForwardOnly (0).
  • Η μέθοδος είναι adUseServer.
  • Ένα πεδίο που ενημερώνεται έχει ένα κενό διάστημα στο όνομα του πεδίου.
  • Χρησιμοποιείτε το πρόγραμμα οδήγησης Microsoft Access ODBC.
Καλεί τις μεθόδους AddNew και Update, σε ένα δρομέα συμπερίληψης του διακομιστή, μόνο για προώθηση, είναι μια μη έγκυρη λειτουργία. ActiveX Data Objects (ADO) αντισταθμίζει αυτό το ελάττωμα κώδικα κατά τη δημιουργία μιας πρότασης INSERT για να εκτελέσετε τη λειτουργία. Όταν το ADO δημιουργεί την πρόταση INSERT, αυτό δεν οριοθετούνται με τα ονόματα των πεδίων. Επομένως, τα ονόματα των πεδίων που περιέχουν ένα κενό διάστημα δημιουργούν ένα σφάλμα σύνταξης.

Για παράδειγμα, μια έγκυρη εντολή INSERT θα είναι ως εξής:
   INSERT INTO Table ([field with space]) Values(value)
				
Το ADO δημιουργεί τον ακόλουθο κώδικα:
   INSERT INTO Table (field with space) Values(value)
				

Προτεινόμενη αντιμετώπιση

Υπάρχουν διάφορες πιθανές λύσεις:
  • Μην χρησιμοποιείτε κενά διαστήματα στα ονόματα πεδίων στη βάση δεδομένων σας.
  • Χρησιμοποιήστε μια μέθοδος του adUseClient (3).
  • Μην χρησιμοποιείτε ένα Τύπος_δρομέα του adOpenForwardOnly (0), όπως adOpenKeyset (1), (2) adOpenDynamic ή adOpenStatic (3).
  • Εκτέλεση της λειτουργίας με τη δημιουργία τη δική σας πρόταση INSERT, σε ονόματα πεδίων, αντί να χρησιμοποιήσετε τις μεθόδους AddNew και Update, χρησιμοποιώντας ως οριοθέτες.
  • Χρησιμοποιήστε την υπηρεσία παροχής Microsoft OLE DB για Jet έκδοση 3.51 ή 4.0, αντί για την υπηρεσία παροχής Microsoft OLE DB για ODBC και το πρόγραμμα οδήγησης Microsoft Access ODBC.

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα σφάλμα το οποίο παρουσιάζεται στα προϊόντα της, που αναφέρονται στην αρχή αυτού του άρθρου.

Ιδιότητες

Αναγν. άρθρου: 189220 - Τελευταία αναθεώρηση: Σάββατο, 18 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Λέξεις-κλειδιά: 
kbbug kbdatabase kbdriver kbjet kbmt KB189220 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:189220

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com