Excel to DBF

ปกติการแปลงไฟล์จาก *.xls ไปเป็น *.dbf ไม่ใช่เรื่องยากเย็นอะไรนัก ซึ่งผมก็ทำอยู่บ่อยๆ เพียงแค่เปิดไฟล์โปรแกรม Excel แล้ว Save As เป็น *.dbf ก็เสร็จแล้ว แต่ว่าวันนี้มาเจอกรณีแปลกๆ ที่ยังไม่สามารถจะหาคำตอบได้ หลังจากแปลงข้อมูลไปเป็น dbf แล้วข้อมูลมาไม่ครบ สมุมติว่าข้อมูลเดิมมี 1000 records พอแปลงแล้วมา 950 อีก 50 หายไปไหนไม่รู้ นั่งงมอยู่หลายวิธี แปลงไปแปลงมาทั้ง Excel 2000 และ 2003 พอจะมาแปลงใน 2007 อ้าวแปลงเป็น dbf ไม่ได้ สรุปว่ายังไงก็ไม่ได้ เลยมาทำใน Access แทน นั่นคือ import ไฟล์ *.xls แล้ว export ไปเป็น *.dbf ก็จะได้ข้อมูลมาครบทุกอย่าง ใครมีปัญหาเหมือนผม จะลองทำดูก็ได้

ไฟล์ original ที่เป็น xls

Excel 1

จำนวน Records ที่หายไปหลังจากแปลงออกมาเป็น dbf

Excel 2

จำนวน Records ครบเท่าเดิมหลังจาก import เข้ามาใน Access

Excel 3

เปิดเอกสาร

การแปลงหน่วยตารางเมตรไปเป็น ไร่ งาน และตารางวา

การคำนวณพื้นที่ในข้อมูล polygon ปกติจะทำกันอยู่ 2 หน่วยคือ ตารางเมตร และ ไร่ สำหรับพื้นที่ขนาดเล็กหน่วยที่คำนวณได้โดยตรงจากฟังก์ชั่นของโปรแกรม ส่วนใหญ่จะเป็นตารางเมตรแล้วจึงนำมาหารด้วย 1,600 เพื่อแปลงเป็นไร่ ซึ่งจะได้ตัวเลขออกมาเป็นจำนวนจุดทศนิยม เช่น 15.26 23.31 45.11 ไร่ เป็นต้น ค่าตัวเลขเหล่านี้สามารถนำเอาไปใช้งานได้เลย แต่ถ้าต้องการแปลงเป็นหน่วยย่อยๆ ของไร่ ลงไปอีก ได้แก่ งาน และ ตารางวา ซึ่งเป็นที่นิยมใช้กันมากในงานทางด้านที่ดิน โดยหน่วยของการแปลงมีดังนี้

1,600 ตารางเมตร = 1 ไร่
400 ตารางเมตร = 1 งาน
4 ตารางเมตร = 1 ตารางวา

ในเบื้องต้นการจะคำนวณพื้นที่จะต้องให้ข้อมูลอยู่ในระบบพิกัด UTM ก่อน ซึ่งหน่วยของระบบพิกัดนี้จะมีหน่วยเป็น “เมตร”

1. การคำนวณพื้นที่โดยใช้คำสั่ง [Shape].ReturnArea จะได้หน่วยของพื้นที่เป็น “ตารางเมตร” (M2)

M2 = [Shape].ReturnArea

2. การคำนวณพื้นที่ “ตารางเมตร” (M2) ไปเป็นหน่วยไร่แบบมีจุดทศนิยม (Rai_DD) โดยนำไปหาร 1,600

Rai_DD = M2/1,600

3. การคำนวณพื้นที่ “ไร่แบบมีจุดทศนิยม” (Rai_DD) ไปเป็นหน่วยไร่แบบจำนวนเต็ม (Rai)

Rai = [Rai_DD].Floor

4. การคำนวณพื้นที่ “งาน” (Ngan)

Ngan = ([Rai_DD] – [Rai] * 4).Floor

5. การคำนวณพื้นที่ “ตารางวา” (Wa2)

Wa2 = (((([Rai_DD] – [Rai]) * 4) – [Ngan]) * 100).Round

Attribute

***ปล. ฟังก์ชั่น Floor ใช้ตัดเลขทศนิยมทิ้ง เอาเฉพาะตัวเลขจำนวนเต็ม เช่น 10.23 –> 10 , 22.88 –> 22
Round ใช้ปัดเศษทศนิยมขึ้นให้เป็นตัวเลขจำนวนเต็ม เช่น 10.233 –> 10.23, 22.885 –> 22.88