PRB: Excel giá tr? tr? l?i gh? th? NULL s? d?ng DAO OpenRecordset

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 194124 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TRI?U CH?NG

Khi k?t n?i v?i m?t b?ng tính Excel s? d?ng phương pháp đào OpenRecordset, m?t s? giá tr? trong m?t c?t Excel có th? đư?c tr? l?i khi Null khi các l?p dư?i giá tr? không ph?i là m?t Null. Đi?u này thư?ng x?y ra khi s? và văn b?n datatypes đang intermixed trong cùng m?t c?t Excel.

NGUYÊN NHÂN

V?n đ? này gây ra b?i m?t h?n ch? c?a tr?nh đi?u khi?n Excel ISAM trong đó m?t khi nó s? xác đ?nh datatype m?t c?t Excel, nó s? tr? l?i m?t Null Đ?i v?i b?t k? giá tr? không ph?i là c?a datatype ISAM tr?nh đi?u khi?n đ? cài đ?t s?n đ? cho r?ng c?t Excel. Xác đ?nh tr?nh đi?u khi?n Excel ISAM datatype c?a m?t Excel c?t b?ng cách ki?m tra th?c t? giá tr? trong l?n đ?u tiên vài hàng và sau đó ch?n m?t datatype đ?i di?n cho đa s? các giá tr? trong c?a nó L?y m?u.

GI?I PHÁP

Có hai cách gi?i quy?t cho hành vi này:
  1. B?o đ?m r?ng các d? li?u trong Excel đư?c nh?p như văn b?n. Ch? đ?nh d?ng các Excel c?t đ? văn b?n s? không th?c hi?n vi?c này. B?n ph?i nh?p l?i các hi?n có giá tr? sau khi đ?nh d?ng c?t Excel. Trong Excel, b?n có th? s? d?ng phím F5 đ? nh?p l?i hi?n có giá tr? trong các t? bào đư?c ch?n.
  2. B?n có th? thêm tùy ch?n IMEX = 1; đ? Excel k?t n?i chu?i trong các OpenDatabase phương pháp. Ví dụ:
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                False, True, "Excel 8.0; HDR=NO; IMEX=1;")
    
    						
    Lưu ?: Cài đ?t IMEX = 1 cho bi?t tr?nh đi?u khi?n đ? s? d?ng ch? đ? nh?p kh?u. Tieåu bang naøy, cơ quan đăng k? thi?t l?p ImportMixedTypes = văn b?n s? đư?c nh?n th?y. L?c lư?ng này h?n h?p d? li?u đ? đư?c chuy?n đ?i thành văn b?n. Này s? làm vi?c tin c?y, b?n có th? c?ng có th? s?a đ?i các thi?t l?p registry, TypeGuessRows = 8. ISAM tr?nh đi?u khi?n m?c đ?nh có v? lúc đ?u tiên tám hàng và t? đó l?y m?u xác đ?nh datatype. N?u này tám hàng l?y m?u là t?t c? các s?, sau đó thi?t l?p IMEX = 1 s? không chuy?n đ?i m?c đ?nh datatype văn b?n; nó s? v?n c?n s?.

    B?n ph?i c?n th?n r?ng IMEX = 1 không đư?c s? d?ng b?a b?i. Đi?u này là Ch? đ? nh?p kh?u, do đó, các k?t qu? có th? là không th? đoán trư?c n?u b?n c? g?ng làm thêm ho?c c?p nh?t d? li?u trong ch? đ? này.

    Các thi?t l?p th? c?a IMEX là:
            0 is Export mode
            1 is Import mode
            2 is Linked mode (full update capabilities)
    
    						
    Khóa registry nơi các cài đ?t mô t? ? trên đư?c đ?t là:

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

    Xem tài li?u tham kh?o ph?n c?a bài vi?t này cho thông tin khi các B?ng tính Excel có văn b?n tiêu đ? c?t v?i d? li?u s?.

T?NH TR?NG

Hành vi này là do thi?t k?.

THÔNG TIN THÊM

Các bư?c đ? t?o l?i hành vi

Đ? l?p l?i v?n đ? này, l?n đ?u tiên t?o ra m?t b?ng tính Excel v?i m?t m?c đ?nh Sheet1 b?ng tính. ? c?t đ?u tiên c?a Sheet1, nh?p vào đây các giá tr? - 123, aaa, 456, bbb, 789. Lưu này Workbook trong C:\Temp c?a b?n thư m?c, và đ?t tên là Book1.XLS.

Trong Visual Basic, t?o ra m?t d? án m?i c?a tiêu chu?n EXE và làm theo các bư?c sau:
  1. Th?c hi?n m?t tham chi?u đ?n Microsoft DAO 3.5 đ?i tư?ng thư vi?n. Trong Visual Basic 6.0, đây s? là Microsoft DAO 3.51 đ?i tư?ng thư vi?n.
  2. Thêm m?t CommandButton vào các h?nh th?c m?i.
  3. Đ?t đo?n m? sau trong các h?nh th?c khai báo chung ph?n:
          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
    
    						
    Ch?y các d? án b?ng cách b?m phím F5 và lưu ? r?ng trong c?a s? Debug các giá tr? văn b?n đư?c in như Null. N?u ph?n l?n các giá tr? trong b?ng tính Excel là văn b?n, sau đó k?t qu? t? m? ? trên s? đư?c đ?o ngư?c. Có ngh?a là, các giá tr? s? s? tr? l?i như Nulls.

THAM KH?O

Đ? bi?t thêm chi ti?t, xin vui l?ng xem các bài vi?t sau đây trong các Cơ s? ki?n th?c Microsoft:

190195: HOWTO: gi?i nén thông tin t? Excel t? v?i DAO

Thu?c tính

ID c?a bài: 194124 - L?n xem xét sau cùng: 20 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • 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
T? khóa: 
kbprb kbmt KB194124 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:194124

Cung cấp Phản hồi

 

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