Δεν είναι δυνατό να αλλάξετε, να προσθέσετε ή να διαγράψετε δεδομένα σε πίνακες που είναι συνδεδεμένοι με ένα βιβλίο εργασίας του Excel στην Office Access 2007, Office Access 2003 ή Access 2002

Συμπτώματα

Στο Microsoft Office Access 2007 ή στο Microsoft Office Access 2003 ή στην Microsoft Access 2002, δεν είναι δυνατό να αλλάξετε, να προσθέτετε ή να διαγράφετε δεδομένα σε πίνακες που είναι συνδεδεμένοι με ένα βιβλίο εργασίας του Microsoft Excel.

Επιπλέον, ενδέχεται να αντιμετωπίσετε αυτήν τη συμπεριφορά όταν ισχύει κάποια από τις ακόλουθες συνθήκες:
  • Μπορείτε να δημιουργήσετε ένα ερώτημα για την ανάκτηση δεδομένων από πίνακες που είναι συνδεδεμένοι με ένα βιβλίο εργασίας του Excel.
  • Μπορείτε να δημιουργήσετε μια φόρμα που έχει πρόσβαση σε δεδομένα από πίνακες που είναι συνδεδεμένοι με ένα βιβλίο εργασίας του Excel.
  • Χρησιμοποιήστε DAO ή ADO για την ενημέρωση μέσω προγραμματισμού πίνακες που είναι συνδεδεμένοι με ένα βιβλίο εργασίας του Excel.
Όταν εκτελείτε ένα ερώτημα για να ενημερώσετε εγγραφές σε ένα συνδεδεμένο βιβλίο εργασίας του Excel, λαμβάνετε το ακόλουθο μήνυμα:
Η λειτουργία πρέπει να χρησιμοποιήσει ένα ερώτημα με δυνατότητα ενημέρωσης
Όταν χρησιμοποιείτε DAO για την ενημέρωση μέσω προγραμματισμού πίνακες που είναι συνδεδεμένοι με ένα βιβλίο εργασίας του Excel, λαμβάνετε το ακόλουθο μήνυμα:
Σφάλμα χρόνου εκτέλεσης '3027' δεν είναι δυνατό να ενημερώσετε. Βάση δεδομένων ή το αντικείμενο είναι μόνο για ανάγνωση.
Όταν προσπαθείτε να ενημερώσετε τα συνδεδεμένα δεδομένα στο ADO, το μήνυμα είναι το ίδιο, αλλά ο αριθμός σφάλματος μπορεί να είναι παρόμοιο με το ακόλουθο:
-2147217911 (80040e09)
Όταν εκτελείτε ένα ερώτημα για την εισαγωγή εγγραφών σε ένα βιβλίο εργασίας του Excel, λαμβάνετε το ακόλουθο μήνυμα λάθους ακόμα και αν το βιβλίο εργασίας του Excel δεν είναι συνδεδεμένο με μια βάση δεδομένων της Access:
Η λειτουργία πρέπει να χρησιμοποιήσει ένα ερώτημα με δυνατότητα ενημέρωσης

Αιτία

Αυτό αναμένεται η συμπεριφορά παρουσιάζεται όταν οποιαδήποτε από τις ακόλουθες συνθήκες είναι αληθής:
  • Χρησιμοποιείτε το Office Access 2007.
  • Έχετε εγκαταστήσει το Microsoft Office 2003 Service Pack 2 (SP2) ή νεότερο service pack ή ενημερωμένες εκδόσεις Access 2003 που κυκλοφόρησαν μετά το Office 2003 SP2.

    Για περισσότερες πληροφορίες σχετικά με το Microsoft Office 2003 Service Pack 2, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

    887616 περιγραφή του Office 2003 Service Pack 2

  • Έχετε εγκαταστήσει την ενημερωμένη έκδοση για την Access 2002 (KB904018) που κυκλοφόρησε στις 18 Οκτωβρίου 2005.

    Για περισσότερες πληροφορίες σχετικά με την ενημερωμένη έκδοση για την Access 2002 (KB904018), κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

    904018 περιγραφή της ενημερωμένης έκδοσης για την Access 2002: 18 Οκτωβρίου 2005

  • Έχετε εγκαταστήσει μια εφαρμογή χρόνου εκτέλεσης της Access που περιλαμβάνει το Microsoft Office 2003 Service Pack 2 (SP2) ή νεότερη έκδοση service pack, ενημερωμένες εκδόσεις Access 2003 που κυκλοφόρησαν μετά το Office 2003 SP2 ή την ενημερωμένη έκδοση για την Access 2002 (KB904018) που είναι με ημερομηνία 18 Οκτωβρίου 2005 ή νεότερη έκδοση.
    Για περισσότερες πληροφορίες σχετικά με τον τρόπο συμπερίληψης αρχείων ενημερωμένων Office με μια εφαρμογή χρόνου εκτέλεσης της Access, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

    916176 ο οδηγός χρησιμοποιεί τα αρχεία χρόνου εκτέλεσης που περιλαμβάνονται με την έκδοση της Access, όταν δημιουργείτε ένα πακέτο εγκατάστασης για μια εφαρμογή στην Access 2003 ή στην Access 2002

Εναλλακτικός τρόπος αντιμετώπισης

Για να επιλύσετε αυτή η αναμενόμενη συμπεριφορά, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους.

Μέθοδος 1: Χρησιμοποιήστε το Microsoft Excel

Ανοίξτε το συνδεδεμένο βιβλίο εργασίας του Excel στο Microsoft Excel και, στη συνέχεια, κάντε τις αλλαγές σας στο βιβλίο εργασίας. Όταν ολοκληρώσετε τις αλλαγές, αποθηκεύστε τις αλλαγές και, στη συνέχεια, κλείστε το βιβλίο εργασίας.

Μέθοδος 2: Χρήση Office Access 2007, Access 2003 ή Access 2002

Εισαγωγή συνδεδεμένο βιβλίο εργασίας του Excel στην Access και, στη συνέχεια, κάντε τις αλλαγές στα δεδομένα. Όταν ολοκληρώσετε τις αλλαγές, εξαγάγετε τα δεδομένα σε ένα αρχείο .xls Excel.

Για να εξαγάγετε τον πίνακα από την Access στο Excel, εκτελέστε τον ακόλουθο κώδικα στην Access.
Public Sub WorkArounds()On Error GoTo Leave

Dim strSQL, SQL As String
Dim Db As ADODB.Connection
Set Db = New ADODB.Connection
Db.CursorLocation = adUseClient
Db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=<AccessPath>"
'Note: In Office Access 2007, use the following line of code:
'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=<AccessPath>"
SQL = "<MyQuery>"
CopyRecordSetToXL SQL, Db
Db.Close
MsgBox "Access has successfully exported the data to excel file.", vbInformation, "Export Successful."
Exit Sub
Leave:
MsgBox Err.Description, vbCritical, "Error"
Exit Sub
End Sub

Private Sub CopyRecordSetToXL(SQL As String, con As ADODB.Connection)
Dim rs As New ADODB.Recordset
Dim x
Dim i As Integer, y As Integer
Dim xlApp As Excel.Application
Dim xlwbBook As Excel.Workbook, xlwbAddin As Excel.Workbook
Dim xlwsSheet As Excel.Worksheet
Dim rnData As Excel.Range
Dim stFile As String, stAddin As String
Dim rng As Range
stFile = "<ExcelPath>"
'Instantiate a new session with the COM-Object Excel.exe.
Set xlApp = New Excel.Application
Set xlwbBook = xlApp.Workbooks.Open(stFile)
Set xlwsSheet = xlwbBook.Worksheets("<WorkSheets>")
xlwsSheet.Activate
'Getting the first cell to input the data.
xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
y = xlApp.ActiveCell.Column - 1
xlApp.ActiveCell.Offset(1, -y).Select
x = xlwsSheet.Application.ActiveCell.Cells.Address
'Opening the recordset based on the SQL query and saving the data in the Excel worksheet.
rs.CursorLocation = adUseClient
If rs.State = adStateOpen Then
rs.Close
End If
rs.Open SQL, con
If rs.RecordCount > 0 Then
rs.MoveFirst
x = Replace(x, "$", "")
y = Mid(x, 2)
Set rng = xlwsSheet.Range(x)
xlwsSheet.Range(x).CopyFromRecordset rs
End If
xlwbBook.Close True
xlApp.Quit
Set xlwsSheet = Nothing
Set xlwbBook = Nothing
Set xlApp = Nothing

End Sub
Σημείωση Σε αυτό το παράδειγμα κώδικα, αντικαταστήστε τα ακόλουθα σύμβολα κράτησης θέσης:
  • <AccessPath>
  • <ExcelPath>
  • <MyQuery>
    < MyQuery > είναι το σύμβολο κράτησης θέσης για το ερώτημα που εκτελείτε σε πίνακες στη βάση δεδομένων της Access. Το αποτέλεσμα του ερωτήματος εξάγονται στο βιβλίο εργασίας του Excel.
  • <WorkSheets>
    < φύλλα εργασίας > είναι ένα σύμβολο κράτησης θέσης για το φύλλο εργασίας του Excel που θέλετε να εξαγάγετε το αποτέλεσμα.
Για να εκτελέσετε αυτό το παράδειγμα κώδικα, πιέστε το συνδυασμό πλήκτρων CTRL + G για να ανοίξετε το παράθυρο άμεσης παρακολούθησης , πληκτρολογήστε λύσειςκαι, στη συνέχεια, πιέστε το πλήκτρο ENTER.

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

Λόγω των νομικών ζητημάτων, η Microsoft έχει απενεργοποιήσει τη λειτουργία στην Access 2003 και στην Access 2002 που επιτρέπουν στους χρήστες να αλλάζουν τα δεδομένα στο συνδεδεμένοι πίνακες που οδηγούν σε μια περιοχή σε ένα βιβλίο εργασίας του Excel. Ωστόσο, όταν κάνετε αλλαγές απευθείας στο βιβλίο εργασίας του Excel, οι αλλαγές εμφανίζονται σε συνδεδεμένο πίνακα στην Access.
Ιδιότητες

Αναγνωριστικό άρθρου: 904953 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια