PRB: Vrácená jako NULL použití DAO OpenRecordset hodnoty Excel

Překlady článku Překlady článku
ID článku: 194124 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Při připojování do tabulky aplikace Excel pomocí metody DAO OpenRecordset, mohou být některé hodnoty ve sloupci Excel vráceny jako Null při podkladové hodnota není NULL. K tomu obvykle dochází při číselných a datové typy text jsou v rámci stejné sloupce Excel intermixed.

Příčina

Tento problém je způsoben omezení ovladač ISAM pro Excel, že jakmile Určuje datový typ Excel sloupec, vrátí pro daný sloupec Excel má převezme Null hodnotu, která není datový typ ovladač ISAM. Ovladač Excel ISAM Určuje datový typ sloupce Excel prověřením skutečné hodnoty v prvních několika řádků a vybere datový typ, který představuje většinu hodnoty v jeho vzorkování.

Řešení

Existují dvě řešení tohoto chování:
  1. Zajištění, že data v aplikaci Excel zadána jako text. Právě přeformátování Excel sloupec na text není dosáhnout. Existující hodnoty musí znovu po přeformátování Excel sloupce. V aplikaci Excel můžete znovu existující hodnoty ve vybrané buňce F5.
  2. Přidat možnost IMEX = 1; řetězec metoda OpenDatabase připojit v aplikaci Excel. Například:
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                False, True, "Excel 8.0; HDR=NO; IMEX=1;")
    
    						
    Poznámka: nastavení IMEX = 1 informuje ovladač použít režim importu. V tomto stavu ImportMixedTypes nastavení registru = text bude být zaznamenali. To přinutí smíšená data převedena na text. Tento pracovat spolehlivě, pravděpodobně máte také změnit nastavení registru TypeGuessRows = 8. ISAM ovladače ve výchozím nastavení vyhledá prvních osm řádků a z dané vzorkování Určuje typ dat. Pokud tento osm řádku je vzorkovací všechny číselné potom nastavení IMEX = 1 výchozí datový typ není převést na text; zůstanou číselný.

    Musí být opatrní, že IMEX = 1 nelze použít ztráty. Toto je IMPORT režimu, takže mohou být výsledky nepředvídatelné, pokud se pokusíte provést připojí nebo aktualizuje data v tomto režimu.

    Jsou možné nastavení IMEX:
            0 is Export mode
            1 is Import mode
            2 is Linked mode (full update capabilities)
    
    						
    je klíč registru kde jsou umístěny výše popsaných nastavení:

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

    Naleznete v části Odkazy tohoto článku informace na při tabulky Excel obsahuje text záhlaví sloupce s číselná data.

Prohlášení

Toto chování je záměrné.

Další informace

Kroky pro reprodukci chování

Pokud chcete duplikovat tento problém, nejprve vytvořit sešit Excel s tabulkou výchozí List1. V prvním sloupci List1 zadejte následující hodnoty - 123, aaa 456 bbb 789. Uložte tento sešit v adresáři C:\Temp a název Book1.XLS.

V aplikaci Visual Basic vytvořit nový projekt standardní EXE a postupujte takto:
  1. Zkontrolujte odkaz objektové knihovny Microsoft DAO 3.5. V aplikaci Visual Basic 6.0 to bude objektové knihovny Microsoft DAO 3.51.
  2. Přidat CommandButton nový formulář.
  3. V sekci deklarací Obecné ve formuláři umístěte následující kód:
          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
    
    						
    spustit projektu stisknutím klávesy F5 a Všimněte si, že v ladicím okně textové hodnoty jsou vytištěny jako NULL. Pokud většina hodnoty ve Tabulka Excel byly textu, potom výsledek z výše uvedený kód by být stornováno. Číselné hodnoty, tedy by pocházet zpět jako hodnoty Null.

Odkazy

Další informace naleznete v následujícím článku databáze Microsoft Knowledge Base:

190195: Postupy: extrahuje informace z listu Excel s DAO

Vlastnosti

ID článku: 194124 - Poslední aktualizace: 24. června 2004 - Revize: 4.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbmt kbprb KB194124 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:194124

Dejte nám zpětnou vazbu

 

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