Data Type ใน Access เลือกยังไงให้ถูก

การเลือก Data Type ใน Access

Data Type ใน Access คือชนิดของข้อมูลที่ field นั้นจะเก็บ เช่น ข้อความ ตัวเลข วันที่ หรือเงิน ถ้าเลือกถูก โปรแกรมจะทำงานง่ายขึ้น แต่ถ้าเลือกผิด อาจเจอปัญหาคำนวณไม่ได้ วันที่เรียงผิด หรือข้อมูลหายรูปแบบครับ

บทความนี้จะสรุป Data Type ที่มือใหม่เจอบ่อย และให้หลักคิดว่า field แบบไหนควรใช้ชนิดข้อมูลอะไร (field คือช่องข้อมูลแต่ละช่อง หรือคอลัมน์ใน Table)

เวลาสร้างหรือแก้ Table ในมุมมอง Design View เราจะเห็นคอลัมน์ Data Type อยู่ข้าง ๆ ชื่อ field ตรงนั้นแหละครับคือจุดที่เราเลือกชนิดข้อมูลให้แต่ละ field

สรุป Data Type ใน Access ที่มือใหม่เลือกผิดบ่อย

Short Text ใช้กับข้อมูลที่เป็นข้อความ

Short Text ใช้กับข้อมูลที่เป็นข้อความทั่วไป เช่น

  • ชื่อลูกค้า
  • รหัสสินค้า
  • เบอร์โทร
  • อีเมล
  • เลขที่เอกสาร

จุดที่มือใหม่มักพลาดคือเห็นข้อมูลเป็นตัวเลขแล้วเลือก Number ทั้งหมด เช่น เบอร์โทรหรือรหัสไปรษณีย์

จริง ๆ แล้วเบอร์โทรไม่ใช่ตัวเลขสำหรับคำนวณครับ เราไม่ได้เอาเบอร์โทรไปบวก ลบ คูณ หาร และบางครั้งมีเลข 0 นำหน้า ถ้าใช้ Number อาจทำให้เลข 0 หายได้

ดังนั้นเบอร์โทร รหัสสินค้า เลขที่เอกสาร หรือรหัสไปรษณีย์ ส่วนใหญ่ควรใช้ Short Text

Number ใช้กับตัวเลขที่ต้องคำนวณ

Number ใช้กับข้อมูลที่เป็นตัวเลขจริง ๆ และต้องเอาไปคำนวณ เช่น

  • จำนวนสินค้า
  • อายุ
  • คะแนน
  • จำนวนชิ้น
  • น้ำหนัก

ถ้าเป็นจำนวนเต็ม ให้เลือก Field Size ให้เหมาะ (Field Size คือการกำหนดช่วง/ขนาดตัวเลขที่ field เก็บได้) เช่น Long Integer สำหรับรหัสที่เชื่อมกับ AutoNumber หรือจำนวนเต็มทั่วไป

ถ้าเป็นตัวเลขทศนิยม เช่น น้ำหนัก หรือเปอร์เซ็นต์ อาจใช้ Single หรือ Double ซึ่งเป็นชนิดตัวเลขที่เก็บจุดทศนิยมได้ (Double เก็บทศนิยมได้ละเอียดกว่า Single)

แต่ถ้าเป็นเงิน อย่าเพิ่งใช้ Double ทันที ให้ดูหัวข้อ Currency ก่อนครับ

Currency ใช้กับจำนวนเงิน

ถ้า field เก็บมูลค่าเงิน เช่น ราคา ยอดรวม ส่วนลด ภาษี ผมแนะนำให้ใช้ Currency

ตัวอย่าง

  • UnitPrice
  • DiscountAmount
  • VatAmount
  • TotalAmount

Currency เหมาะกับงานเงินมากกว่า Number แบบ Double ในงานทั่วไป เพราะการเก็บเงินด้วย Double บางครั้งทำให้ทศนิยมปัดเศษเพี้ยนเล็กน้อยตอนคำนวณ ส่วน Currency ออกแบบมาเพื่องานเงินโดยเฉพาะ จึงคลาดเคลื่อนน้อยกว่า

พูดง่าย ๆ คือ ถ้าเป็นเงิน ให้คิดถึง Currency ก่อน

Date/Time ใช้กับวันที่จริง

ถ้า field เป็นวันที่หรือเวลา เช่น วันที่ขาย วันที่นัดหมาย วันที่จ่ายเงิน ควรใช้ Date/Time

ตัวอย่าง

  • OrderDate
  • PaymentDate
  • DueDate
  • CreatedAt

อย่าเก็บวันที่เป็น Text ถ้าต้องกรองหรือคำนวณวันที่ เพราะ Text จะเรียงและเปรียบเทียบแบบข้อความ ไม่ใช่แบบวันที่จริง

ถ้าใช้ Date/Time เราจะทำ Query แบบนี้ได้ง่ายขึ้น เช่น

  • หาข้อมูลระหว่างวันที่ 1 ถึง 31
  • เรียงจากวันที่ล่าสุด
  • คำนวณว่าส่งของช้ากี่วัน

Yes/No ใช้กับข้อมูลที่มีสองสถานะ

Yes/No ใช้กับข้อมูลที่ตอบได้แค่ใช่หรือไม่ใช่ เช่น

  • ใช้งานอยู่หรือไม่
  • จ่ายเงินแล้วหรือยัง
  • ยกเลิกเอกสารหรือไม่
  • เป็นลูกค้าประจำหรือไม่

ชื่อ field แบบนี้มักขึ้นต้นด้วย Is, Has, Can เช่น

  • IsActive
  • IsPaid
  • IsCancelled
  • HasWarranty

การตั้งชื่อแบบนี้ช่วยให้อ่าน Query หรือ VBA แล้วเข้าใจง่ายขึ้น

Attachment และ Lookup ใช้อย่างระวัง

Access มี Data Type อย่าง Attachment และ Lookup Wizard ด้วย แต่สำหรับมือใหม่ควรใช้เท่าที่จำเป็น

Attachment ดูสะดวกเพราะแนบไฟล์ใน Table ได้ แต่ถ้าระบบโตขึ้น ฐานข้อมูลอาจใหญ่และดูแลยาก บางงานควรเก็บไฟล์ไว้ใน folder แล้วเก็บ path แทน

ส่วน Lookup Wizard ทำให้เลือกข้อมูลได้ง่ายในมุมมองตาราง (Datasheet) แต่ในงานจริงผมมักแนะนำให้ใช้ Foreign Key ปกติ แล้วค่อยทำเป็น Combo Box (ช่องแบบดรอปดาวน์ให้คลิกเลือก) ใน Form จะควบคุมง่ายกว่า

คำถามง่าย ๆ ก่อนเลือก Data Type

ก่อนเลือกชนิดข้อมูล ลองถามตัวเองแบบนี้

  • ข้อมูลนี้เอาไปคำนวณไหม?
  • ต้องเก็บเลข 0 นำหน้าไหม?
  • ต้องเรียงหรือกรองเป็นวันที่ไหม?
  • เป็นเงินหรือเป็นตัวเลขทั่วไป?
  • มีแค่ใช่/ไม่ใช่หรือเปล่า?

คำตอบพวกนี้จะพาเราไปหา Data Type ที่เหมาะสมเองครับ

สรุป

Data Type เป็นเรื่องพื้นฐานที่ส่งผลยาวมาก ถ้าเลือกถูกตั้งแต่แรก Query จะง่าย Form จะกรอกข้อมูลถูก และ Report จะสรุปผลได้แม่นขึ้น

จำง่าย ๆ คือ ข้อความใช้ Short Text, ตัวเลขคำนวณใช้ Number, เงินใช้ Currency, วันที่ใช้ Date/Time และสถานะสองทางใช้ Yes/No

อย่าเลือกจากหน้าตาข้อมูลอย่างเดียว ให้เลือกจาก "วิธีใช้งานข้อมูล" เป็นหลักครับ

บทความที่เกี่ยวข้อง

คำถามที่พบบ่อย

เบอร์โทรควรใช้ Number หรือ Short Text

ควรใช้ Short Text เพราะเบอร์โทรไม่ได้เอาไปคำนวณ และอาจมีเลข 0 นำหน้า ขีด หรือรหัสประเทศ ถ้าใช้ Number อาจทำให้รูปแบบเพี้ยนได้

จำนวนเงินควรใช้ Data Type อะไร

โดยทั่วไปควรใช้ Currency เพราะเหมาะกับตัวเลขเงินและลดปัญหาความคลาดเคลื่อนจากทศนิยมมากกว่า Number แบบ Double ในงานเงินทั่วไป

วันที่ควรเก็บเป็น Text ได้ไหม

ไม่ควร ถ้าเป็นวันที่จริงควรใช้ Date/Time เพื่อให้กรองช่วงวันที่ เรียงลำดับ และคำนวณวันได้ถูกต้อง

บทความที่เกี่ยวข้องกัน: