SORUN: DAO OpenRecordset kullanarak BOş olarak döndürülüyor Excel değerleri

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

Bu Sayfada

Belirtiler

Temel alan değeri boş değer değilse, bir Excel elektronik tablo DAO OpenRecordset yöntemi kullanılarak için bağlanırken, bazı değerler bir <a0>Excel</a0> sütununda NULL döndürülebilir. Bu genellikle sayısal oluşur ve metin veri türleri aynı Excel sütunun intermixed.

Neden

Bir Excel sütunun veri türünü belirleyen bir kez değil ISAM sürücüsü veri türü herhangi bir değer için boş değer için Excel sütun için varsayılan döndürür, bu sorunu Excel ISAM sürücüsü tarafından bir sınırlama nedeniyle oluşur. Excel ISAM sürücüsü, ilk birkaç satırına fiili değerlerini inceleyerek, bir Excel sütunun veri türünü belirler ve daha sonra örnekleme değerler büyük bir çoğunluğunda gösteren veri türünü seçer.

Çözüm

Bu davranış için iki geçici çözüm vardır:
  1. Excel'deki verileri metin olarak girdiğinizden emin olun. Yalnızca Excel sütun metne biçimlendirme bunu değil. Excel sütun biçimlendirmeden sonra varolan değerleri yeniden girmeniz gerekir. Excel'de, F5, seçili hücredeki varolan değerleri yeniden girmek için kullanabilirsiniz.
  2. Seçenek IMEX ekleyebileceğiniz = 1; Excel için OpenDatabase yöntemine dizede bağlanma. Örneğin:
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                False, True, "Excel 8.0; HDR=NO; IMEX=1;")
    
    						
    Not: ayar IMEX = 1 alma modunu kullanmak için sürücü bildirir. Bu durumda, kayıt defterinin ımportmixedtypes ayarlama = metin fark. Bu, metne dönüştürülecek, karışık veri zorlar. Bunun güvenilir bir çözüm için ayrıca TypeGuessRows, kayıt defteri ayarını değiştirmeniz gerekebilir = 8. ISAM sürücüsü varsayılan olarak ilk sekiz satırları arar ve bu örnekleme gelen veri türü belirler. Bu sekiz satır örnekleme IMEX ayarlama sonra tüm sayısal ise = 1 varsayılan veri türü metne dönüştürecek olan değil; sayısal kalır.

    Dikkatli olmanız gerekir, IMEX = 1 indiscriminately kullanılmayacak. Bu Al, böylece sonuçları yapmak çalışırsanız, öngörülmeyen modu, ekler veya bu modda verileri güncelleştirir.

    Olası IMEX ayarları:
            0 is Export mode
            1 is Import mode
            2 is Linked mode (full update capabilities)
    
    						
    kayıt defteri anahtarının yukarıda açıklanan ayarlar bulunur:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel

    Metni sütun başlıkları sayısal verileri içeren Excel elektronik tablosu varsa, bilgi için bu makalenin <a1>Başvurular</a1> bölümüne bakın.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

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

Bu sorun çoğaltmak için <a0></a0>, ilk varsayılan tablo1 elektronik tabloyla birlikte bir Excel çalışma kitabı oluşturun. Sayfa1 ilk sütununda aşağıdaki değerler-, 123 456, bbb (789 aaa, girin. Bu çalışma kitabı, C:\Temp dizinine kaydetmek ve Book1.XLS olarak adlandırın.

Visual Basic'te, yeni bir standart exe DOSYASı) projesi oluşturun ve aşağıdaki adımları izleyin:
  1. Microsoft DAO 3.5 nesne kitaplığına bir başvuru yapın. Visual Basic 6.0 içinde bu Microsoft DAO 3.51 Object Library olacaktır.
  2. Bir KomutDüğmesi, yeni forma ekleyin.
  3. Aşağıdaki kodu formun genel Declarations bölümünde yerleştirin:
          Dim Db As Database
          Dim Rs As Recordset
    
          Private Sub Command1_Click()
              Set Rs = Db.OpenRecordset("Sheet1$")
              'This will print the spreadsheet Text values as Nulls.
    
              Do While Not Rs.EOF
                  Debug.Print Rs(0)
                  Rs.MoveNext
              Loop
    
          End Sub
    
          Private Sub Form_Load()
              'HDR refers to the Excel header row.
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                   False, True, "Excel 8.0; HDR=NO;")
    
          End Sub
    
          Private Sub Form_Unload(Cancel As Integer)
              Db.Close
              Set Db = Nothing
    
          End Sub
    
    						
    F5 tuşuna basarak projeyi çalıştırın ve hata ayıklama penceresinde metin değerleri boş yazdırılır unutmayın. Excel elektronik tablodaki değerlerin büyük metin varsa, daha sonra yukarıdaki kod sonuç geri alınması. Diğer bir deyişle, sayısal değerler olarak Boşlara döndürülmesini.

Referanslar

Ek bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:

190195: Nasıl YAPıLıR: DAO ile Excel sayfası Gönderen bilgisi Ayıkla

Özellikler

Makale numarası: 194124 - Last Review: 24 Haziran 2004 Perşembe - Gözden geçirme: 4.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Anahtar Kelimeler: 
kbmt kbprb KB194124 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:194124

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