Αναγν. άρθρου: 128809 - Τελευταία αναθεώρηση: Σάββατο, 18 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

"Διαγραφή #" σφάλματα με συνδεδεμένους πίνακες ODBC

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

Συμπτώματα

Κατά την ανάκτηση, εισαγωγή ή ενημέρωση εγγραφών σε ένα συνδεδεμένο πίνακα ODBC, κάθε πεδίο σε μια εγγραφή περιέχει το μήνυμα λάθους "#Deleted". Κατά την ανάκτηση, εισαγωγή ή ενημέρωση εγγραφών χρησιμοποιώντας κώδικα, εμφανίζεται το μήνυμα λάθους "Εγγραφή διαγράφεται."

Αιτία

Ο μηχανισμός βάσης δεδομένων Microsoft Jet είναι σχεδιασμένο γύρω από ένα μοντέλο που καθοδηγείται από σύνολο κλειδιών. Αυτό σημαίνει ότι γίνεται ανάκτηση δεδομένων, που έχει εισαχθεί και ενημερωμένα με βάση τις τιμές κλειδιού (στην περίπτωση του ένα συνδεδεμένο πίνακα ODBC, το μοναδικό ευρετήριο του πίνακα).

Αφού η Microsoft Access εκτελεί μια εισαγωγή ή ενημέρωση ενός συνδεδεμένου πίνακα ODBC, χρησιμοποιεί μια θέση κριτήρια για να επιλέξετε την εγγραφή ξανά, για να βεβαιωθείτε ότι η εισαγωγή ή ενημέρωση. Η θέση κριτηρίων βασίζεται στο μοναδικό ευρετήριο. Αν και πολλοί παράγοντες μπορούν να προκαλέσουν την επιλογή για να μην επιστρέφει εγγραφές, πολύ συχνά η αιτία είναι ότι η τιμή του κλειδιού έχει προσωρινά η Microsoft Access δεν είναι ίδια με την πραγματική τιμή του κλειδιού στον πίνακα ODBC. Άλλες πιθανές αιτίες είναι οι εξής:
  • Αντιμετωπίζει ένα έναυσμα ενημέρωσης ή εισαγωγής στον πίνακα, τροποποιώντας την τιμή του κλειδιού.
  • Βασίζετε το μοναδικό ευρετήριο σε μια τιμή κινητής υποδιαστολής.
  • Χρήση ενός πεδίου κειμένου σταθερού μήκους που μπορεί να γεμιστούν στο διακομιστή με το σωστό ποσό των κενών διαστημάτων.
  • Με ένα συνδεδεμένο πίνακα ODBC που περιέχουν τιμές Null σε οποιαδήποτε από τις οποίες αποτελείται το μοναδικό ευρετήριο πεδία.
Οι παράγοντες αυτοί δεν προκαλούν άμεσα το μήνυμα λάθους "#Deleted". Αντίθετα, προκαλούν τη Microsoft Access για να μεταβείτε στο επόμενο βήμα στη διατήρηση των τιμών κλειδιού, που είναι να επιλέξετε ξανά την εγγραφή, αυτή τη φορά με τα κριτήρια που βασίζονται σε όλα τα άλλα πεδία στην εγγραφή. Εάν αυτό το βήμα επιστρέφει μόνο μία εγγραφή, η Microsoft Access επιστρέφει το μήνυμα "#Deleted" επειδή δεν έχει μια αξιόπιστη τιμή κλειδιού για να εργαστείτε. Εάν κλείσετε και ανοίξετε ξανά τον πίνακα ή επιλέξτε Εμφάνιση όλων των εγγραφών από το μενού εγγραφές, καταργούνται τα σφάλματα "#Deleted".

Η Microsoft Access χρησιμοποιεί μια παρόμοια διαδικασία για την ανάκτηση εγγραφών από ένα συνδεδεμένο πίνακα ODBC. Πρώτα, ανακτά τις τιμές κλειδιού και στη συνέχεια τα υπόλοιπα πεδία που ταιριάζουν με τις τιμές του κλειδιού. Εάν η Microsoft Access δεν μπορεί να εντοπίσει ξανά αυτήν την τιμή, όταν προσπαθεί να εντοπίσει το υπόλοιπο της εγγραφής, θεωρεί ότι η εγγραφή διαγράφεται.

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

Ακολουθούν ορισμένες στρατηγικές που μπορείτε να χρησιμοποιήσετε για να αποφύγετε αυτήν τη συμπεριφορά:
  • Αποφύγετε την εισαγωγή εγγραφών που βρίσκονται ακριβώς την ίδια εκτός από το μοναδικό ευρετήριο.
  • Αποφύγετε την ενημερωμένη έκδοση που ενεργοποιεί τις ενημερωμένες εκδόσεις του μοναδικό ευρετήριο και ένα άλλο πεδίο.
  • Μην χρησιμοποιείτε ένα πεδίο αιώρηση ως ένα μοναδικό ευρετήριο ή ως τμήμα ενός μοναδικού ευρετηρίου εξαιτίας της ενσωματωμένη στρογγυλοποίησης προβλήματα αυτού του τύπου δεδομένων.
  • Κάντε όλες τις ενημερωμένες εκδόσεις και εισαγωγές χρησιμοποιώντας ερωτήματα διαβίβασης SQL, ώστε να γνωρίζετε ακριβώς τι στέλνεται στο αρχείο προέλευσης δεδομένων ODBC.
  • Ανάκτηση εγγραφών με ένα ερώτημα διαβίβασης SQL. SQL ενός ερωτήματος διαβίβασης δεν έχει δυνατότητα ενημέρωσης, και συνεπώς δεν προκαλεί σφάλματα "#Delete".
  • Αποφύγετε την αποθήκευση τιμών Null σε οποιοδήποτε πεδίο, καθιστώντας το μοναδικό ευρετήριο για τον συνδεδεμένο πίνακα ODBC προς τα επάνω.

Περισσότερες πληροφορίες

ΣΗΜΕΙΩΣΗ: In Microsoft Access 2.0, linked tables were called attached tables.

Βήματα για την αναπαραγωγή της συμπεριφοράς


  1. Open the sample database Northwind.mdb (or NWIND.MDB. in Microsoft Access 2.0)
  2. Use the Upsizing Tools to upsize the Shippers table.

    NOTE: This table contains an AutoNumber field (or Counter field in Microsoft Access 2.0) that is translated on SQL Server by the Upsizing Tools into a trigger that emulates a counter.
  3. Open the linked Shippers table and enter a new record. Make sure that the record you enter has the same data in the Company Name field as the previous record.
  4. Press TAB to move to a new record. Note that the "#Deleted" error fills the record you entered.
  5. Close and re-open the table. Note that the record is correct.

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 97 Standard Edition
Λέξεις-κλειδιά: 
kberrmsg kbinterop kbprb kbmt KB128809 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:128809  (http://support.microsoft.com/kb/128809/en-us/ )
Retired KB ArticleΑποποίηση ευθυνών για περιεχόμενο της Γνωσιακής Βάσης (KB) που έχει αποσυρθεί
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.