Friday, October 3, 2008

ปัญหาการใช้ ADO อ่านข้อมูลจาก Excel แล้ว Field ที่เป็น Mixed data types อ่านค่าผิดเป็น Null หรือ Empty

ปัญหานี้มาจาก ADO จะต้องทำการ Scan ข้อมูลแต่ละ Columnใน Excel worksheet (โดยไม่เกี่ยวกับ Format) โดย Default แล้วจะทำการ Scan ข้อมูลจำนวน 8 rows เพื่อกำหนด data type ดังนั้น หากใน Column มีข้อมูลปนกัน เช่น Text กับ Number ก็อาจจะทำให้เกิดการอ่านค่าผิดได้ และค่าที่ผิดก็จะอ่านได้เป็น Null หรือ Empty

วิธีการแก้ไข ก็คือ ให้แก้ไขค่า Registry
HKLM\Software\Microsoft\Jet\4.0\Engines\Excel

โดยกำหนดค่า TypeGuessRows ซึ่งเป็นชนิด REG_DWORD ให้เป็น 0 (ค่า TypeGuessRows นี้ มีค่า Default = 8 และ สามารถกำหนดค่าได้ระหว่าง 0-16)

สำหรับรายละเอียดของการอ่านข้อมูลจากไฟล์ Excel โดยใช้ ADO สามารถดูได้จาก Link ด้านล่างนี้

How To Use ADO with Excel Data from Visual Basic or VBA

No comments: