Μήνυμα λάθους κατά την προσπάθειά σας να ανοίξετε έναν συνδεδεμένο πίνακα του SharePoint στην Access 2007: "ο μηχανισμός βάσης δεδομένων της Microsoft Office Access δεν ήταν δυνατό να εντοπίσει το αντικείμενο"


Συμπτώματα


Κατά την προσπάθειά σας να ανοίξετε ένα συνδεδεμένο πίνακα των υπηρεσιών Microsoft Windows SharePoint Services στο Microsoft Office Access 2007, ενδέχεται να λάβετε ένα μήνυμα λάθους παρόμοιο με το ακόλουθο μήνυμα λάθους:
Ο μηχανισμός βάσης δεδομένων της Microsoft Office Access δεν ήταν δυνατό να εντοπίσει το αντικείμενο 'όνομα αντικειμένου'. Βεβαιωθείτε ότι το αντικείμενο υπάρχει και ότι γράφετε σωστά το όνομά του και το όνομα της διαδρομής.
Ωστόσο, ο συνδεδεμένος πίνακας του SharePoint ανοίγει με επιτυχία. Αυτό το μήνυμα λάθους παρουσιάζεται μετά την ενημέρωση του συνδεδεμένου πίνακα του SharePoint μέσω προγραμματισμού περισσότερες από μία φορές σε μια γραμμή, χρησιμοποιώντας τη μέθοδο χρήσης αντικειμένων πρόσβασης δεδομένων (DAO).

Αιτία


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

Λύση


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

Δείγμα υπορουτίνας για τη διαγραφή των σχέσεων

Για να χρησιμοποιήσετε μια υπορουτίνα για να διαγράψετε τις σχέσεις για τη σύνδεση ανανέωσης, ακολουθήστε τα εξής βήματα:
  1. Εισαγάγετε τον ακόλουθο κώδικα σε μια λειτουργική μονάδα στο Microsoft Visual Basic για εφαρμογές (VBA):
    Public Sub RemoveInvalidRelationships(strTableName As String)    On Error Resume Next    Dim cnt As Integer    Dim i As Integer    Dim bForeignTable As Boolean    Dim bTable As Boolean    Dim td As TableDef        cnt = CurrentDb.Relations.Count - 1    ' Go through the relationships collection backwards, to ensure that if we delete one, we will have a valid index    For i = cnt To 0 Step -1        bTable = False        bForeignTable = False        If (StrComp(CurrentDb.Relations(i).Table, strTableName, vbTextCompare) = 0) Then bTable = True        If (StrComp(CurrentDb.Relations(i).ForeignTable, strTableName, vbTextCompare) = 0) Then bForeignTable = True                If bTable Xor bForeignTable Then            ' Determine if either the table or foreign table is the table that we are interested in            ' We will then look at the other table to determine if it exists            ' If it doesn't exist, delete the relationship            If bTable Then                Set td = CurrentDb.TableDefs(CurrentDb.Relations(i).ForeignTable)            Else                Set td = CurrentDb.TableDefs(CurrentDb.Relations(i).Table)            End If                        If Err.Number = 3265 Then                CurrentDb.Relations.Delete CurrentDb.Relations(i).Name            End If            Err.Clear        End If            Next iEnd Sub
  2. Στον πηγαίο κώδικα όπου καλείται η μέθοδος ανανέωσης σύνδεσης , εισαγάγετε τον ακόλουθο κώδικα αμέσως πριν από τη γραμμή πηγαίου κώδικα της σύνδεσης:
    RemoveInvalidRelationships "WSSLink"
    Σημείωση Το "Wsfbi" είναι το όνομα του συνδεδεμένου πίνακα που ανανεώνεται από τη μέθοδο ανανέωσης σύνδεσης .

Κατάσταση


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