PRB: ส่งคืนเป็น NULL ใช้ OpenRecordset DAO ค่า Excel

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 194124 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

อาการ

เมื่อมีการเชื่อมต่อไปยังกระดาษคำนวณของ Excel ใช้เมธอด DAO OpenRecordset บางค่าในคอลัมน์ใน Excel อาจถูกส่งกลับเป็น Null เมื่อมีการกำหนดค่าไม่เป็น Null ซึ่งเกิดโดยทั่วไปเมื่อตัวเลข และมี intermixed datatypes ข้อความภายในคอลัมน์เดียวกันของ Excel

สาเหตุ

ปัญหานี้มีสาเหตุจากการจำกัดโปรแกรมควบคุม ISAM Excel ที่หลังจากที่คุณกำหนดชนิดข้อมูลของคอลัมน์ใน Excel มันจะกลับเป็น Null สำหรับค่าที่ไม่ได้ของชนิดข้อมูลโปรแกรมควบคุม ISAM มี defaulted ไปสำหรับคอลัมน์ที่ Excel ไดรเวอร์ ISAM Excel กำหนดชนิดข้อมูลของคอลัมน์ใน Excel โดยการตรวจสอบค่าที่แท้จริงในไม่กี่แถวแรก และจากนั้น เลือกชนิดข้อมูลที่แสดงค่าใน sampling ของส่วนใหญ่

การแก้ไข

มีสองการแก้ไขปัญหาสำหรับปัญหานี้:
  1. insure ว่า มีป้อนข้อมูลใน Excel เป็นข้อความ ทำให้การฟอร์แมตใหม่เพียงคอลัมน์ Excel เป็นข้อความจะไม่สำเร็จนี้ คุณต้องใส่ค่าที่มีอยู่ใหม่หลังจากฟอร์แมตใหม่คอลัมน์ Excel ใน Excel คุณสามารถใช้ F5 เพื่อใส่ใหม่ค่าที่มีอยู่ในเซลล์ที่เลือก
  2. คุณสามารถเพิ่มตัว IMEX = 1 ไปที่ Excel เชื่อมต่อสายอักขระในวิธี OpenDatabase ได้ ตัวอย่าง::
          Set Db = OpenDatabase("C:\Temp\Book1.xls", _
                False, True, "Excel 8.0; HDR=NO; IMEX=1;")
    
    						
    การตั้งค่าหมายเหตุ: IMEX = 1 บอกให้โปรแกรมควบคุมที่จะใช้โหมดการนำเข้า ในสถานะนี้ ImportMixedTypes การตั้งค่ารีจิสทรี =ข้อความจะถูก noticed ซึ่งเป็นบังคับผสมผสานข้อมูลจะถูกแปลงเป็นข้อความ สำหรับข้อมูลนี้จะทำงานได้ คุณยังอาจต้องปรับเปลี่ยนการตั้งค่ารีจิสทรี TypeGuessRows = 8 ได้ ISAM ปรากฏในแถวแรกแปดโปรแกรมควบคุม โดยค่าเริ่มต้น และจากนั้น sampling กำหนดชนิดข้อมูล ถ้านี้แปดแถว sampling อยู่ทั้งหมดตัว จาก นั้นตั้งค่า IMEX = 1 จะไม่แปลงชนิดข้อมูลเริ่มต้นที่เป็นข้อความ จะยังคงเป็นตัวเลข

    คุณต้องระมัดระวัง IMEX นั้น = 1 ไม่มีใช้ indiscriminately นี่คือการนำเข้าโหมด ดังนั้นผลลัพธ์อาจ unpredictable หากคุณพยายามทำ appends หรือการปรับปรุงข้อมูลในโหมดนี้

    การตั้งค่า IMEX เป็นไปได้ได้แก่:
            0 is Export mode
            1 is Import mode
            2 is Linked mode (full update capabilities)
    
    						
    รีจิสทรีคีย์ที่เป็นที่ตั้งของการตั้งค่าที่อธิบายข้างต้นคือ:

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

    ดูส่วนการอ้างอิงของบทความนี้สำหรับข้อมูลในกระดาษคำนวณของ Excel ที่มีส่วนหัวของคอลัมน์ข้อความกับข้อมูลที่เป็นตัวเลข

สถานะ

ลักษณะการทำงานนี้เกิดจากการออกแบบ

ข้อมูลเพิ่มเติม

ขั้นตอนในการทบทวนเกิดลักษณะการทำงาน

เมื่อต้องการทำสำเนาปัญหานี้ ก่อนสร้างสมุดงาน Excel ที่ มีกระดาษคำนวณ Sheet1 เริ่มต้น ในคอลัมน์แรกของ Sheet1 ป้อนต่อไปนี้ค่า - 123, aaa, 456, bbb, 789 บันทึกสมุดงานนี้ในไดเรกทอรี C:\Temp และชื่อ Book1.XLS

ใน Visual Basic สร้างโครงการ EXE มาตรฐานใหม่ และทำตามขั้นตอนเหล่านี้:
  1. ทำให้การอ้างอิงไปยัง Microsoft DAO 3.5 วัตถุไลบรารี ในการแสดงผล 6.0 พื้นฐาน ซึ่งจะเป็น Microsoft DAO 3.51 วัตถุไลบรารี
  2. เพิ่ม CommandButton ในแบบฟอร์มใหม่
  3. วางรหัสต่อไปนี้ในส่วน Declarations ทั่วไปของฟอร์ม:
          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 และโปรดสังเกตว่า ในหน้าต่างดีบัก ค่าข้อความที่พิมพ์เป็น Null ถ้าค่าในกระดาษคำนวณของ Excel ส่วนใหญ่จะมีข้อความ แล้วผลลัพธ์จากรหัสรับผิดข้างต้นจะมีการกลับรายการ นั่นคือ ค่าตัวเลขจะกลับมาเป็น Nulls

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม โปรดดูบทความในฐานความรู้ของ Microsoft ต่อไปนี้:

190195: HOWTO: แยกข้อมูลจากแผ่นงาน Excel กับ DAO

คุณสมบัติ

หมายเลขบทความ (Article ID): 194124 - รีวิวครั้งสุดท้าย: 7 มกราคม 2554 - Revision: 3.0
ใช้กับ
  • 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
Keywords: 
kbprb kbmt KB194124 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:194124

ให้ข้อเสนอแนะ

 

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