PRB: Excel hodnoty vrátené ako NULL pomocou DAO OpenRecordset

Preklady článku Preklady článku
ID článku: 194124 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

PRIZNAKY

Pri pripájaní na hárok programu Excel DAO OpenRecordset metódou, niektoré hodnoty v stĺpci programu Excel môžu byť vrátené ako Null keď podkladového aktíva hodnota nie je Null. To zvyčajne vyskytuje číselné a textové dátové typy sú navzájom zmiešané v tom istom stĺpci Excel.

PRICINA

Tento problém je spôsobený obmedzenie Excel Knižnica ISAM ovládača, ktorý Akonáhle to určuje údajový typ stĺpca program Excel, vráti hodnotu Null pre všetky hodnoty, ktoré nie je typu údajov Knižnica ISAM ovládač nedodržala na pre tento stĺpec programe Excel. Knižnica ISAM Excel ovládač určuje údajový typ o Excel stĺpec preskúmaním skutočnej hodnoty v prvom niekoľko riadkov a potom vyberie typ údajov, ktorý predstavuje väčšina hodnôt v jeho odber vzoriek.

RIESENIE

Existujú dva spôsoby pre toto správanie:
  1. Poistiť, že údaje v programe Excel je zapísané ako text. Len preformátovania Program Excel stĺpec textu bude splniť to. Musí re-enter existujúce hodnoty po preformátovania stĺpec programe Excel. V programe Excel, môžete Použite F5 opätovný vstup na existujúce hodnoty vo vybranej bunke.
  2. Môžete pridať možnosť IMEX = 1; Excel pripojiť reťazec v OpenDatabase metóda. Napríklad:
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                False, True, "Excel 8.0; HDR=NO; IMEX=1;")
    
    						
    Poznámka: Nastavenie IMEX = 1 rozpráva ovládač používanie dovozného režimu. V tomto stave databázy registry nastavenie ImportMixedTypes = Text bude všimol. Toto sily zmiešané údaje chcete konvertovať na text. Pre túto prácu spoľahlivo, môžete tiež musieť upraviť nastavenie databázy registry, TypeGuessRows = 8. Knižnica ISAM ovládač predvolene vyzerá na prvých ôsmich riadkov a z že odberu vzoriek Určuje údajový typ. Ak tento osem riadok odberu vzoriek je všetko číselná, potom Nastavenie IMEX = 1 bude previesť predvolený údajový typ Text; to bude zostať numerické.

    Musíte byť opatrní, že IMEX = 1 nepoužíva nediskriminačne. To je DOVOZNÉHO režimu, takže výsledky môžu byť nepredvídateľné, ak sa pokúsite robiť pridá alebo aktualizácie údajov v tomto režime.

    Možných nastavení IMEX sú:
            0 is Export mode
            1 is Import mode
            2 is Linked mode (full update capabilities)
    
    						
    Je kľúč databázy registry, kde sa nachádzajú nastavenia opísané vyššie:

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

    Nájdete v časti odkazy tohto článku informácie o keď Hárok programu Excel má text hlavičky stĺpcov s číselných údajov.

STAV

Toto správanie je predvolené.

DALSIE INFORMACIE

Kroky na reprodukovanie správanie

Ak chcete duplikovať tento problém, najprv vytvorte zošit programu Excel s predvolené Hárok Hárok1. V prvom stĺpci Hárok1, zadajte nasledujúce hodnoty - 123, aaa, 456, bbb, 789. Tento zošit uložiť vaše C:\Temp adresár, a to meno súboru Zošit1.xls.

V jazyku Visual Basic, vytvorenie nového štandardného EXE projektu a postupujte nasledovne:
  1. Odvolávajú sa na Microsoft DAO 3.5 Objektová knižnica. V jazyku Visual Basic 6.0, bude to Microsoft DAO 3.51 Objektová knižnica.
  2. Pridať CommandButton do nového formulára.
  3. Umiestnite nasledujúci kód do formulára všeobecných vyhlásení oddiel:
          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
    
    						
    Spustenie projektu stlačením klávesu F5 a Všimnite si, že v okne Debug textové hodnoty sú vytlačené ako Null. Ak väčšina hodnoty v Hárok programu Excel boli textu, potom je vyplývať z vyššie uvedený kód by sa zrušila. To znamená, číselné hodnoty by sa vrátil ako NULL.

ODKAZY

Ďalšie informácie, prečítajte si nasledujúci článok v Microsoft Knowledge Base:

190195: HOWTO: extrahovať informácie z hárka programu Excel s DAO

Vlastnosti

ID článku: 194124 - Posledná kontrola: 19. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • 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
Kľúčové slová: 
kbprb kbmt KB194124 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:194124

Odošlite odozvu

 

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