Office Access 2007, Office Access 2003 veya Access 2002'de bir Excel çalışma kitabına bağlantı içeren tablolardaki verileri değiştiremiyor, ekleyemiyor veya silemiyorsunuz

Makale çevirileri Makale çevirileri
Makale numarası: 904953 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Microsoft Office Access 2007, Microsoft Office Access 2003 veya Microsoft Access 2002'de, bir Microsoft Excel çalışma kitabına bağlantı içeren tablolardaki verileri değiştiremez, ekleyemez veya silemezsiniz.

Ayrıca, aşağıdaki koşullardan biri geçerli olduğunda bu davranışla karşılaşabilirsiniz:
  • Excel çalışma kitabına bağlantı içeren tablolardan veri almak üzere bir sorgu oluşturursunuz.
  • Excel çalışma kitabına bağlantı içeren tablolardaki verilere erişen bir form oluşturursunuz.
  • Excel çalışma kitabına bağlantı içeren tabloları program yardımıyla güncelleştirmek üzere DAO veya ADO kullanırsınız.
Bağlantılı bir Excel çalışma kitabındaki kayıtları güncelleştirmek üzere bir sorgu gerçekleştirdiğinizde aşağıdaki hata iletisini alırsınız:
İşlem, güncelleştirilebilir sorgu kullanmalıdır
Excel çalışma kitabına bağlantı içeren tabloları program yardımıyla güncelleştirmek üzere DAO kullandığınızda aşağıdaki iletiyi alırsınız:
Çalışma Zamanı Hatası '3027' Güncelleştirilemiyor. Veritabanı veya nesne salt okunur.
Bağlantılı verileri ADO ile güncelleştirmeye çalıştığınızda aynı iletiyi alırsınız, ancak hata numarası aşağıdakine benzeyebilir:
-2147217911 (80040e09)
Excel çalışma kitabına kayıt eklemek üzere bir sorgu çalıştırdığınızda, Excel çalışma kitabı bir Access veritabanına bağlı olmasa da aşağıdaki hata iletisini alırsınız:
İşlem, güncelleştirilebilir sorgu kullanmalıdır

Neden

Bu beklenen davranış aşağıdaki durumlardan herhangi biri doğruysa oluşur:
  • Office Access 2007 kullanıyorsunuz.
  • Microsoft Office 2003 Service Pack 2 (SP2) veya Office 2003 SP2 sonrasında yayımlanmış bir Access 2003 güncelleştirmesi yüklediniz.

    Microsoft Office 2003 Service Pack 2 hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    887616 Office 2003 Service Pack 2'nin açıklaması (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
  • 18 Ekim 2005 tarihli Access 2002 güncelleştirmesini (KB904018) yüklediniz.

    Access 2002 güncelleştirmesi (KB904018) hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    904018 Access 2002 güncelleştirmesi: 18 Ekim 2005'in açıklaması (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
  • Microsoft Office 2003 Service Pack 2 (SP2), Office 2003 SP2 sonrasında yayımlanan herhangi bir Access 2003 güncelleştirmesi veya 18 Ekim 2005 tarihli Access 2002 güncelleştirmesi (KB904018) ya da sonrasını içeren bir Access çalışma zamanı uygulaması yüklediniz.
    Office güncelleştirme dosyalarını bir Access çalışma zamanı uygulamasına ekleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    916176 Access 2003 veya Access 2002'de bir uygulama için yükleme paketi oluşturulduğunda sihirbaz Access'in yayımlanan sürümünde bulunan çalışma zamanı dosyalarını kullanıyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)

Pratik Çözüm

Bu beklenen davranışa geçici bir çözüm için aşağıdaki yöntemlerden birini kullanın.

Yöntem 1: Microsoft Excel kullanın

Bağlantılı Excel çalışma kitabını Microsoft Excel'de açın ve değişiklikleri çalışma kitabında yapın. Değişiklikleri tamamladığınızda kaydedin ve çalışma kitabını kapatın.

Yöntem 2: Office Access 2007, Access 2003 veya Access 2002 kullanın

Bağlantılı Excel çalışma kitabını Access'e alın ve verilerdeki değişiklikleri yapın. Değişiklikleri tamamladığınızda, verileri bir Excel .xls dosyası olarak verin.

Access'teki tabloyu Excel'e vermek için, aşağıdaki kodu Access'te çalıştırın.
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=<AccessYolu>"
    'Not: Office Access 2007'de, aşağıdaki kod satırını kullanın:
    'Db.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=<AccessYolu>"
    SQL = "<Sorgum>"
    CopyRecordSetToXL SQL, Db
    Db.Close
    MsgBox "Access verileri Excel dosyasına başarıyla verdi.", vbInformation, "Verme İşlemi Başarılı Oldu."
    Exit Sub
Leave:
        MsgBox Err.Description, vbCritical, "Hata"
        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 = "<ExcelYolu>"
    'Excel.exe adlı COM Nesnesi ile yeni bir oturum örneği oluştur.
    Set xlApp = New Excel.Application
    Set xlwbBook = xlApp.Workbooks.Open(stFile)
    Set xlwsSheet = xlwbBook.Worksheets("<ÇalışmaSayfaları>")
    xlwsSheet.Activate
    'Verilerin girileceği ilk hücre alınıyor.
    xlwsSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
    y = xlApp.ActiveCell.Column - 1
    xlApp.ActiveCell.Offset(1, -y).Select
    x = xlwsSheet.Application.ActiveCell.Cells.Address
    'SQL sorgusuna bağlı olarak kayıt kümesi açılıyor ve veriler Excel çalışma sayfasına kaydediliyor.
    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
Not Bu kod örneğinde, aşağıdaki yertutucuları değiştirin:
  • <AccessYolu>
  • <ExcelYolu>
  • <Sorgum>
    <Sorgum>, Access veritabanındaki tablolarda çalıştırdığınız sorgunun yertutucusudur. Sorgunun sonucu Excel çalışma kitabına verilir.
  • <ÇalışmaSayfaları>
    <ÇalışmaSayfaları>, sonucu vermek istediğiniz Excel çalışma kitabının yertutucusudur.
Bu kod örneğini çalıştırmak için, CTRL+G tuşlarına basarak Immediate (Anında Çalıştır) penceresini açın, WorkArounds yazın ve ENTER tuşuna basın.

Daha fazla bilgi

Microsoft, yasal sorunlar nedeniyle Access 2003 ve Access 2002'de kullanıcıların Excel çalışma kitabındaki bir aralığa işaret eden bağlantılı tablolardaki verileri değiştirmesine olanak tanıyan işlevi devre dışı bırakmıştır. Ancak, doğrudan Excel çalışma kitabında değişiklik yaptığınızda, değişiklikler Access'teki bağlantılı tablolarda görüntülenir.

Özellikler

Makale numarası: 904953 - Last Review: 2 Ağustos 2007 Perşembe - Gözden geçirme: 6.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Access 2002 Runtime
  • Microsoft Office Access 2003 Runtime
Anahtar Kelimeler: 
kbexpertiseadvanced kbdatabase kbtshoot kbprb KB904953

Geri Bildirim Ver

 

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