Import ข้อมูลเข้า Access ง่าย ๆ ในคลิกเดียว

Import ข้อมูลเข้า Access ปกติก็ไม่ยากอยู่แล้ว คือแค่คลิกไม่เท่าไหร่ก็สามารถนำเข้าตารางใน Access ได้แล้ว แต่มีปัญหาว่า ถ้าต้องนำเข้าข้อมูลเดิมซ้ำ ๆ เข้ามาสู่ตารางใน Access บ่อย ๆ จะมีวิธีลัดขั้นตอนหรือไม่? เพราะการนำเข้าข้อมูลไม่ยากก็จริง แต่ถ้าเป็นการทำสเต็ปเดิมซ้ำ ๆ เสียเวลาในการนำเข้าข้อมูลก็อยากได้วิธีที่ง่ายดายกว่าเดิม

Import ข้อมูลเข้า Access

สมมติว่า เราต้องนำ Text File จำนวน 3 file เข้าสู่ตารางใน Access มันจะมีขั้นตอนอะไรบ้าง? จะลองยกตัวอย่างการนำ C.txt เข้าเป็นตาราง C ใน Access วิธีการนำเข้าตารางก็คือ

  1. คลิก External Data > New Data Sauce > From File > Text File
  2. เลือกไฟล์ C.txt และเลือก import a source data to a new… (แต่ถ้าเลือกเข้าตารางที่มีอยู่แล้ว ก็เลือก Append…)
  3. เลือก Delimited คลิก Next (เพราะจะนำเข้าแบบมีตัวคั่น)
  4. ถ้าที่ text file ที่จะนำเข้ามีหัวคอลัมน์ติดมาด้วย ให้เลือก Column Contains Field Names แต่ในตัวอย่างนี้ไม่มีหัวตาราง
  5. เนื่องจาก c.txt ไม่มีหัวตาราง จึงต้องมาตั้งชื่อตารางและกำหนด Type ของข้อมูลใน field นั้นด้วย
  6. คลิก เลือกไม่เอา primary key (หรือจะเอาก็ได้ แล้วแต่) คลิก Next คลิก Finish
Import ข้อมูลเข้า Access

จะเห็นว่าไม่ยากหรอก เพียงแค่มันเสียเวลาปรับแต่งเล็กน้อยตอนนำเข้า บางตาราง อาจจะต้องเข้า Advance อย่างเช่น Language เป็น All และเลือก Code Page เป็น UTF-8 แล้วก็จะมีพวกวันที่ซึ่งจะต้องเปลี่ยนให้เป็น YMD (ปีเดือนวัน) เพราะทางต้นฉบับทำออกมาแบบนั้น บางตารางก็เป็น MDY (เดือนวันปี) ซึ่งต้องมาเลือกรูปแบบทุกครั้งที่นำเข้า งานที่ไม่ยาก แต่มีเรื่องปลึกย่อยต้องทำซ้ำ ๆ กันหลายไฟล์ และมีรายละเอียดปลีกย่อยต่างกันไป การนำเข้าด้วยวิธีนี้จึงออกจะน่าเบื่อเล็กน้อย มันคงดีกว่าถ้าสามารถคลิกเดียวแล้วนำเข้าข้อมูลได้เลย

เอาจริงมันทำได้ และไม่ยากด้วย

สร้าง Macro

ถ้าใครจำได้ เวลาเรา import ไฟล์เข้ามาสู่ตารางใดใดก็ตาม ขั้นสุดท้ายมันจะมีขึ้นให้ติ๊กว่าจะ Save Import Steps หรือไม่

อันนี้แหละที่ช่วยได้มาก ถ้าเราต้องทำอะไรซ้ำ ๆ เดิม ๆ หมายถึง ถ้าเราต้องนำเข้าตารางชื่อเดิม เก็บไว้ที่เดิม คือทุกอย่างเหมือนเดิมหมด แค่จะทำซ้ำมันอีกรอบก็เพียงแค่ติ๊กถูกตรงนี้ไว้ มันจะเก็บสเต็ปที่เราจัดการกับไฟล์นี้ทั้งหมด โดยที่เราไม่ต้องทำอะไรเลย ขอแค่ติ๊กถูกตรง Save Import Steps เพื่อเก็บขั้นตอนต่าง ๆ ไว้ก็แล้วกัน

เมื่อตั้งชื่อเสร็จแล้วเรียบร้อย ต่อไป ถ้าอยากใช้งาน ก็แค่ไปที่แท็บ External Data คลิกที่เมนู Saved Imported เลือกที่เราตั้งชื่อเก็บไว้ แล้วกด Run ข้างล่าง แค่นี้เอง ง่ายมาก!

วิธีนี้ใช้งานได้ทั้งการ Import Export ทั้งการนำเข้าแบบนำเข้ามาเป็นตารางใหม่ หรือว่า Append เข้าตารางที่มีอยู่แล้วก็ได้ ขอเพียงแค่ทำขั้นตอนต่าง ๆ แล้วกดติ๊กถูกตรง Save Import Steps (หรือ Save Export Steps ถ้าเป็น export) 

สร้างปุ่มอัตโนมัติ

จะลองทำให้ดูอีกสักตัวอย่าง คราวนี้เราจะรวบให้ออกมาเป็น 1 ปุ่ม ให้คลิกทีเดียวนำเข้าทุกตารางได้เลย

เปลี่ยนใหม่ สมมติว่า เรามีตาราง A B C อยู่แล้ว เราจะนำ text file เข้ามายังตารางที่มีอยู่แล้ว วิธีก็จะไม่ต่างจากที่เขียนด้านบน เพียงแต่เปลี่ยนจาก import a source data to a new… ให้เป็น Append to แล้วเลือกตารางที่เป็นเป้าหมายปลายทาง จากนั้นก็ Save Import Steps เอาไว้

Import ข้อมูลเข้า Access

ทำให้ครบทั้ง 3 ตาราง จะ Save Import ไว้ในชื่อ Append_A Append_B Append_C

สร้างฟอร์ม

จากนั้นเราจะสร้างฟอร์มให้นำเข้ามา ในที่นี้จะสร้างฟอร์มขึ้นมา 1 ฟอร์ม ตั้งชื่อฟอร์มว่า dashboard โดยไปที่ Create > Form Design

ไปที่แท็บ Design แล้วเพิ่มปุ่ม (Botton) ตั้งชื่อตามใจชอบ ในตัวอย่างตั้งชื่อว่า Imp คลิก Cancel ไปไม่ต้องไปทำอะไรกับมันเพราะเดี๋ยวจะเขียนโค้ดเข้าไปอีกทีหนึ่ง

Import ข้อมูลเข้า Access

ที่ปุ่มที่สร้างขึ้น ไปที่ Property แล้วไปที่แท็บ Event เลือก On Click แล้วคลิกที่ สามจุด (…) เพื่อเรียกหน้าต่างเขียนโค้ดขึ้นมา เราจะใส่โค้ดเพื่อ Import ข้อมูลเข้า Access โดยอัตโนมัติ ไม่ต้องไปทำ 5 ขั้นตอนแรกซ้ำ ๆ ให้เหนื่อยใจ

Coding

จากนั้นใส่คำสั่งนี้

DoCmd.RunSavedImportExport ("Append_A")

DoCmd ก็คือ เราจะให้มันรัน Save Import Steps ที่เราเก็บไว้ ซึ่งในที่นี้เราใส่ในชื่อ Append_A และอื่น ๆ ที่เราอยากให้มัน Run

แต่นี่คือคำสั่งให้นำไฟล์เข้าตารางเท่านั้น ถ้าเป็นการนำเข้าต่อกัน ก็ทำเพียงเท่านี้ จบ

แต่ถ้า เป็นการแทนที่ไฟล์เดิม คือต้องลบของเก่าทิ้งเพื่อไม่ให้มีข้อมูลซ้ำเดิม ก็จะต้องเพิ่มคำสั่งเข้าไป คือคำสั่งการลบฐานข้อมูลของ SQL ธรรมดานี่เอง

DoCmd.RunSQL "DELETE * FROM A;"

นี่คือคำสั่งให้ลบข้อมูลทั้งหมดในตาราง A

ดังนั้นเราจะเรียงคำสั่งตามที่ควรจะเป็นก็คือ

DoCmd.RunSQL "DELETE * FROM A;"
DoCmd.RunSavedImportExport ("Append_A")

ทำ Massage Box

ยังไม่พอ คือ ถ้ามันจบไปเฉย ๆ บางทีเราไม่แน่ใจว่ามันทำงานตามคำสั่งเสร็จแล้วหรือยัง (เผื่อต้องรอเวลา ดังนั้นเราจะสั่งให้มันขึ้นข้อความเมื่อ Run คำสั่งต่าง ๆ จบสิ้นแล้ว นั่นก็คือ

MsgBox "เสร็จแล้วจ้ะ"

หน้าตาเมื่อเสร็จเรียบร้อย

ดังนั้น การ Import ข้อมูลเข้า Access ตามตัวอย่าง คือ นำเข้า Text file จำนวน 3 ไฟล์ เข้าตาราง 3 ตาราง โดยลบข้อมูลก่อนหน้า และเพิ่มเข้าไปใหม่ พร้อมกล่องข้อความบอกว่าเสร็จแล้ว จะเขียนโค้ดฝังในปุ่มเพื่อกดสั่งให้ดำเนินการอัตโนมัติ ดังนี้

Private Sub IMP_Click()
DoCmd.RunSQL "DELETE * FROM A"
DoCmd.RunSQL "DELETE * FROM B"
DoCmd.RunSQL "DELETE * FROM C"
DoCmd.RunSavedImportExport ("Append_A")
DoCmd.RunSavedImportExport ("Append_B")
DoCmd.RunSavedImportExport ("Append_C")
MsgBox "เสร็จแล้วจ้ะ Finished บาย"
End Sub
หน้าตา Code ที่เขียน
ใช้งานจริง จะมีข้อความขึ้นแบบนี้เมื่อนำเข้าสำเร็จ

เพียงเท่านี้เอง สาธุชน เรื่องนี้เป็นการขยายต่อจากเรื่อง การสร้าง DMS ใน Access ในส่วนการนำเข้าข้อมูลว่าจะทำง่าย ๆ อย่างไร

ความคิดเห็นของคุณ :)

%d bloggers like this: