Düzeltme: Excel'de, hatalı sütunlar halinde ADO veri ekler

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

Bu Sayfada

Belirtiler

Boş dize değerleri içeren alanların veri içeriyorsa, ADO bir Microsoft Excel çalışma sayfasına yeni veri satırları eklemek için kullandığınızda, Excel yanlış sütunlara sonraki sayısal alanlar <a1>veri</a1> değerlerini ADO ekleyebilirsiniz.

Jet 4.0 sürümü için Microsoft OLE DB Provider hem de Excel için Microsoft ODBC sürücüsü de bu sorun oluşur. Bu sorun, bir SQL INSERT deyimi veya AddNew ve Update yöntemleri ADO Recordset nesnesinin kullanıp kullanmayacağınızı oluşur.

ADO yeni kayıtlar eklediğinde Excel çalışma kitabını Excel uygulamada açık ise, bu sorun oluşmaz.

Ancak, Microsoft Excel açıksa, ADO işlemleri sırasında bellek sızıntısı oluşuyor çünkü bu yöntem etkinleştirilme zorlaştırır. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
319998Hata: ADO ile Excel çalışma sayfası, sorgu açtığınızda bellek sızıntısı
Bu sorunun oluştuğu durumlarda ilgili ayrıntılar için "Daha fazla bilgi" bölümüne bakın.

Çözüm

Bu sorunu gidermek için <a0></a0>, en son hizmet paketi için Jet 4.0 hizmet paketini edinin. Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
239114Nasıl yapılır:'ı Microsoft Jet 4.0 veritabanı altyapısı için en son hizmet paketini elde

Durum

Microsoft, bunun bu makalenin başında listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi

Davranışı yeniden oluşturma adımları

  1. Microsoft Excel'i açın ve sonra da yeni bir çalışma kitabı oluşturun.
  2. Aşağıdaki örnek veriler, üst sol köşesindeki hücre a1'ile başlayan, Sayfa1'de, şunu yazın:
    Bu tabloyu kapaBu tabloyu aç
    ColumnAColumnBColumnCColumnDColumnEColumnF
    11sınama11sınama
    22sınama22sınama

  3. Çalışma kitabını Test.xls kaydedin. Excel uygulama açık bırakabilirsiniz, ancak yeni bir çalışma kitabı kapatmalısınız.
  4. Microsoft Visual Basic'te, yeni bir standart exe DOSYASı) projesi oluşturun. Varsayılan olarak, Form1 oluşturulur.
  5. Proje menüsünde Başvurular ' ı tıklatın. Kullanılabilir başvurular listesinden seçim Microsoft ActiveX Data Objects (2. x kitaplığı.
  6. Form1 KomutDüğmesi denetim yerleştirin ve sonra tıklatın olay yordamında düğmesi için aşağıdaki kodu yapıştırın. Not Bu kod, ikinci sütuna, <a1>sütun</a1> <a1>c</a1>
    Private Sub Command1_Click()
       Dim strCn As String
       Dim cn As ADODB.Connection
       Dim rs As ADODB.Recordset
       Dim fld As ADODB.Field
    
       'Open connection
       strCn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
          "Data Source=" & App.Path & "\Test.xls;" & _
          "Extended Properties=Excel 8.0"
       Set cn = New ADODB.Connection
       cn.Open strCn
        
       'Add new values.
       Set rs = New ADODB.Recordset
       With rs
          .CursorLocation = adUseClient
          .Open "Select * from [Sheet1$]", cn, adOpenStatic, adLockOptimistic
          .AddNew
          .Fields("ColumnA").Value = 3
          .Fields("ColumnB").Value = 3
          .Fields("ColumnC").Value = ""
          .Fields("ColumnD").Value = 3
          .Fields("ColumnE").Value = 3
          .Fields("ColumnF").Value = "testing"
          .Update
          .Close
       End With
       Set rs = Nothing
       cn.Close
       Set cn = Nothing
    End Sub
    					
  7. Sınama projenizin Visual Basic çalışma kitabınız, Test.xls aynı klasöre kaydedin.
  8. Projeyi çalıştırın ve sonra düğmeyi tıklatın. Visual Basic tümleşik geliştirme ortamı (IDE,), projenin bir ilk çalıştırdığınızda, aşağıdaki hata iletisini alabilirsiniz:
    Çalışma zamanı hatası '-2147467259 (80004005)': harmanlama sırasını işletim sistemi tarafından desteklenen seçili
    Bu bilinen bir sorundur.Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    246167Sıra hatası açılıyor ADODB Recordset'i ilk kez bir Excel XLS karşı harmanlama sırası
  9. Hata iletisi iletişim kutusunda, Debug ' ı tıklatın ve sonra Projeyi çalıştırmaya devam etmek için F5 tuşuna basın. Update iki kez çalıştırmak için bu verilerin bir yerine iki yeni satır eklediğini unutmayın.
  10. Proje sona erdirmek için formu kapatın. Test.xls Excel'de yeniden açın ve verilerde Sayfa1 inceleyin. Aşağıdaki sonuçları beklediğiniz:

    Bu tabloyu kapaBu tabloyu aç
    ColumnAColumnBColumnCColumnDColumnEColumnF
    11sınama11sınama
    22sınama22sınama
    3333sınama

    Ancak, aşağıdaki verileri görürsünüz:

    Bu tabloyu kapaBu tabloyu aç
    ColumnAColumnBColumnCColumnDColumnEColumnF
    11sınama11sınama
    22sınama22sınama
    3333sınama

    Boş dize ColumnC eklenen yoksayıldı ve kayboldu gibi görünür. Bu nedenle, izleyen herhangi bir sayısal değeri hedeflenen hedeflerine solundaki eklenen bir sütun var. Sonraki dize sütunu bu açıktan etkilenmez.

<a1>Zaman</a1> 1

Sınama verileri aşağıdaki gibi yapılandırın:

Bu tabloyu kapaBu tabloyu aç
ColumnAColumnBColumnCColumnDColumnE
1sınama11sınama
2sınama22sınama

Visual Basic projesinde, bölümü gibi yeni değerler eklemek için değiştirebilirsiniz:
   'Add new values.
   Set rs = New ADODB.Recordset
   With rs
      .CursorLocation = adUseClient
      .Open "Select * from [Sheet1$]", cn, adOpenStatic, adLockOptimistic
      .AddNew
      .Fields("ColumnA").Value = 3
      .Fields("ColumnB").Value = ""
      .Fields("ColumnC").Value = 3
      .Fields("ColumnD").Value = 3
      .Fields("ColumnE").Value = "testing"
      .Update
      .Close
   End With
   Set rs = Nothing
   cn.Close
   Set cn = Nothing
				
Sayfa1, Test.xls, Excel'de açtığınızda, aşağıdaki verileri görüntüler:

Bu tabloyu kapaBu tabloyu aç
ColumnAColumnBColumnCColumnDColumnE
1sınama11sınama
2sınama22sınama
333sınama

Tek bir sayısal sütun boş bir dize değeri önce gelen olduğunda bu sorun oluşmaz dikkat edin.

<a1>Zaman</a1> 2

Sınama verileri aşağıdaki gibi yapılandırın:

Bu tabloyu kapaBu tabloyu aç
ColumnAColumnBColumnCColumnDColumnEColumnFColumnG
11sınamasınama11sınama
22sınamasınama22sınama

Visual Basic projesinde, bölümü gibi yeni değerler eklemek için değiştirebilirsiniz:
   'Add new values.
   Set rs = New ADODB.Recordset
   With rs
      .CursorLocation = adUseClient
      .Open "Select * from [Sheet1$]", cn, adOpenStatic, adLockOptimistic
      .AddNew
      .Fields("ColumnA").Value = 3
      .Fields("ColumnB").Value = 3
      .Fields("ColumnC").Value = ""
      .Fields("ColumnD").Value = ""
      .Fields("ColumnE").Value = 3
      .Fields("ColumnF").Value = 3
      .Fields("ColumnG").Value = "testing"
      .Update
      .Close
   End With
   Set rs = Nothing
   cn.Close
   Set cn = Nothing
				
Sayfa1, Test.xls, Excel'de açtığınızda, aşağıdaki verileri görüntüler:

Bu tabloyu kapaBu tabloyu aç
ColumnAColumnBColumnCColumnDColumnEColumnFColumnG
11sınamasınama11sınama
22sınamasınama22sınama
3333sınama

ADO, iki boş bir dize değeri ekler, ColumnC ve ColumnD eklenen boş dizeler yoksayılır ve kayboldu gibi görünür. Bu nedenle, izleyen herhangi bir sayısal değeri, hedeflenen hedeflerine solundaki eklenmiş iki sütun altındadır. Sonraki dize sütunu bu açıktan etkilenmez.

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
294410ACC2002: Boş değerlere, Excel'e verilirken, sonraki alan'ın veri ile değiştirilen
257819Nasıl YAPıLıR: Excel verilerden Visual Basic'de veya VBA'DA ile ADO kullanma.

Özellikler

Makale numarası: 314763 - Last Review: 26 Eylül 2005 Pazartesi - Gözden geçirme: 1.2
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ActiveX Data Objects 2.1
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft OLE DB Provider for Jet 4.0
Anahtar Kelimeler: 
kbmt kbhotfixserver kbqfe kbbug kbfix kbiisam kbjet kbqfe KB314763 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:314763
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.

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