เขียนโปรแกรมได้ภายใน 20 ช.ม. ด้วย MS Access

เขียนโปรแกรมใช้เอง สามารถลดงานได้จริง และสามารถสรุปตรวจสอบ ติดตามงานได้อย่างมีประสิทธิภาพ
4.5 (29 ratings) Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
70 students enrolled
$19
$35
46% off
Take This Course
  • Lectures 75
  • Length 11 hours
  • Skill Level Beginner Level
  • Languages Thai
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

About This Course

Published 8/2016 Thai

Course Description

ก่อนอื่นต้องขอเรียนให้ทราบว่า หลักสูตรนี้ไม่ได้เน้นการใช้งานเครื่องมือต่างๆใน Access แบบครบถ้วนนะครับ เพราะหลักสูตรนี้เราจะมาเน้นด้านการเขียนโปรแกรมให้ใช้งานได้อย่างรวดเร็ว และเน้นที่เครื่องมือพื้นฐานทั้งหมด เพื่อหลีกเลี่ยงปัญหาของ Version ที่ต่างกัน

สิ่งที่คุณจะได้ก่อนอื่นเลย สำหรับหลักสูตรนี้ ก็คือโปรแกรม Stock ที่เราเอามาใช้เดินการสอนนี่แล่ะครับ และโปรแกรม Stock นี้จะเป็นโปรแกรมที่พิเศษมาก ไม่สามารถหาซื้อ หรือจ้างใครเขียนได้เลย เพราะเป็นโปรแกรมที่คุณสามารถจัดการ แก้ไข เปลี่ยนแปลง ปรับปรุง ได้ด้วยตัวเอง เนื่องจากคุณจะรู้วิธีคิด วิธีเขียน ตลอดจนวิธีการแก้ไข ตั้งแต่ต้นจนจบ

Access เป็นเครื่องมือที่ใช้เขียนโปรแกรมได้เร็วที่สุด และง่ายที่สุดในปัจจุบัน เพราะมันเป็นเครื่องมือที่ถูกออกแบบสำหรับ User เขียนโปรแกรมไว้ใช้งานเอง เปรียบไปก็เหมือนกันการใช้ Iphone หรือ Samsung ถ่ายรูปครับ ถ่ายเอาๆ สัก 100 รูป ยังไงก็ต้องมีดีสักรูป 2 รูป จนได้ ต่างกับกล้องอาชีพ ที่ต้องใช้ฝีมือมากมาย อุปกรณ์ก็แพง ได้ภาพดีกว่าก็จริงแต่เราจะทำได้หรือ เพราะอาชีพเราไม่ใช่ช่างถ่ายรูป ดังนั้นการใช้ Access ถือว่าตอบโจทย์อย่างมาก คือทำง่าย ทำเร็ว ทำแล้วเสียก็ทำใหม่ ทำไปใช้ไป หาความชำนาญไปเรื่อยๆได้ ไม่ต้องตั้งหลัก 3 เดือนคิด 4 เดือนพัฒนา ลงท้ายทำไม่จบ สู้ใช้ Access คิดแล้วทำเลยวันเดียวก็รู้ผลแล้ว ตังค์ก็ไม่เสีย ต้นทุนก็ถูก Access 365 แค่ปีละ 2,000 บาทเอง

หลักสูตรนี้ไม่เน้นเขียน Code นะครับ code ที่ต้องใช้สำหรับการเขียนโปรแกรม เกือบทุกโปรแกรม มีไว้ให้ copy หมด เพียงแก้ชื่อเล็กน้อยก็ใช้งานได้ 

นอกจากนั้น Access ยังเป็นเครื่องมือใช้เขียนโปรแกรมเดียวที่มี Table, SQL หรือ Query, Form, Report และ Code เก็บไว้ในไฟล์เดียวกัน สามารถ copy ไปไหนมาไหนได้เหมือน Excel ทำให้สามารถทำงานได้ทุกที่

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

หลักสูตรนี้ครอบคลุมตั้งแต่ การขุดคุ้ย ค้นหา สรุป ตรวจสอบ ติดตาม ของข้อมูลจำนวนมาก แนวคิดพื้นฐานที่โปรแกรมเมอร์ต้องมี การวิเคราะห์งาน การออกแบบ สร้างตาราง Table สร้างแบบสอบถาม Query สร้าง Form สร้าง รายงาน ตลอดจนการเปลี่ยนโปรแกรมจาก Standalone ไปเป็น Network ที่สามารถใช้ร่วมกันได้ทั้งองค์กร

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

หลักสูตรนี้ใช้ Access 2016 เป็นเครื่องมือดำเนินการสอน แต่จะใช้เครื่องมือพื้นฐานทั้งหมด เพื่อให้สามารถใช้ได้กับ Access version อื่นๆ ได้ ส่วนต่างระหว่าง Access แต่ละรุ่น มีเพียงแค่เมนูสลับที่ไปมาเท่านั้น ถ้าไม่ไปใช้พวก Function เฉพาะตัวของแต่ละรุ่น

อื่นๆ เกี่ยวกับหลักสูตรนี้ : -

  • Lifetime access
  • Unconditional Udemy 30-day money-back guarantee
  • ไม่ต้องการความรู้ด้านเขียนโปรแกรม เพียงต้องการความรู้ Excel พื้นฐานเท่านั้น
  • เรียนด้วยวิธีลงมือทำงานจริง



What are the requirements?

  • สำหรับหลักสูตรนี้ ผู้เรียนต้องสามารถใช้ Excel ได้บ้าง

What am I going to get from this course?

  • สามารถใช้ Access เขียนโปรแกรมใช้เองได้อย่างรวดเร็ว
  • สร้างความได้เปรียบในอาชีพ เนื่องจากคนเขียนโปรแกรมได้เป็นทรัพยากรที่หาได้ยากมาก
  • บริหารจัดการข้อมูลซับซ้อน และจำนวนมากได้ดีกว่า Excel อย่างคาดไม่ถึง
  • สามารถ ขุดคุ้ย ค้นหา สรุป ข้อมูลได้ทันที ไม่ต้องรอเป็นวัน
  • หลีกเลี่ยงความซ้ำซ้อนของงาน ที่แต่ละแผนกต้องคีย์ซ้ำกันได้ อย่างเช่น Sale Order หาก Sale คีย์ไปแล้ว แผนกอื่นก็สามารถนำไปใช้ได้เลยไม่ต้องคีย์ซ้ำอีก ช่วยให้งานผิดพลาดน้อยลงได้มาก
  • เข้าใจกระบวนการสร้างโปรแกรม และสามารถออกแบบโปรแกรมได้เอง
  • สามารถใช้ Access ออกแบบ วิเคราะห์ระบบ ตลอดจน สร้าง Prototype ขึั้นมาหาจุดบกพร่องได้ภายในวันเดียว ช่วยประหยัดค่าจ้างเขียนโปรแกรมได้ กรณีต้องการออกแบบเพื่อจ้าง Software House ทำ หรือกระทั่ง Software House เอง ก็สามารถใช้ Access สร้าง Prototype ง่ายๆ เร็วให้ลูกค้าดูได้
  • สามารถสร้างโปรแกรมในลักษณะ Multi-users สำหรับงานต่อเนื่องเกี่ยวพันกันได้โดยแยกโปรแกรมเป็นลักษณะ Client and Server
  • เพิ่มเติมระบบอัตโนมัติต่างๆ เพื่อลดงานพิมพ์ และความผิดพลาดได้
  • สร้างแบบฟอร์มต่างๆ ได้ ไม่ว่าจะเป็น Invoice, Purchase Order, Quotation, Receipt etc.

What is the target audience?

  • สำหรับทุกคนที่ต้องบริหารจัดการข้อมูลจำนวนมาก ตลอดจนบริหารข้อมูลที่มีความสัมพันธ์กัน เพื่อหลีกเลี่ยงความซ้ำซ้อน
  • สำหรับบุคคลธรรมดา ได้จำเป็นต้องรู้วิธีเขียนโปรแกรมมาก่อน หลักสูตรมี Code ไม่มาก
  • สำหรับทุกคนที่ต้องการเขียนโปรแกรมไว้ใช้งานเอง
  • สำหรับหน่วยงานที่อยากได้ระบบไว้ใช้งานต่อเนื่องทั้งองค์กร
  • สำหรับโปรแกรมเมอร์ หรือใครก็ได้ ที่ต้องการเครื่องมือง่ายๆ เร็ว มาสร้างระบบ วิเคราะห์ระบบ หรือนำเสนอแนวคิดของตัวเองออกมาในรูปแบบของโปรแกรมทดลอง หรือ Prototype

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.

Curriculum

Section 1: แนะนำหลักสูตร
04:59

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

ในหลักสูตรนี้คุณจะได้เรียนเทคนิค แนวคิดต่างๆในการเขียนโปรแกรม ซึ่งสามารถนำไปใช้เขียนโปรแกรมได้เป็นส่วนใหญ่

สิ่งที่จะได้เรียนรู้ในหลักสูตร ประกอบไปด้วย

  • การวิเคราะห์ ออกแบบ
  • สร้างตาราง, Query, Form
  • ใช้ Action Query ในการเพิ่มประสิทธิภาพโปรแกรมด้วยระบบอัตโนมัติ
  • เขียน Code Visual Basic เพื่อทำการ Sum, Search, Auto Reference และ Set Value
  • สร้างรายงานสรุป รายงานตรวจสอบ ติดตามงานด้วย Query
  • สร้างแบบฟอร์มสำหรับพิมพ์ต่างๆ ไม่ว่าจะเป็น Quotation, Invoice, Purchase Order ฯลฯ
  • เก็บซ่อนเครื่องมือในการเขียนหลังเสร็จโปรแกรม เพื่อกัน User แก้ไข
  • เปลี่ยนโปรแกรม จาก Standalone ไปเป็น Network ให้ใช้งานต่อเนื่อง และพร้อมกันได้หลายคน เหลายแผน
Article

ดาวน์โหลดตัวอย่างและทรัพยากรอื่นๆที่ใช้ประกอบการสอนได้ตรงนี้

05:13

ตั้งค่า Access ก่อนใช้งาน 

การตั้งค่านี้ต้องกระทำกับทุกเครื่องที่ต้องการนำโปรแกรมไปใช้ แต่เป็นการตั้งครั้งแรกครั้งเดียว จนกว่าจะมีการ Format เครื่องนั้นๆใหม่ หรือมีการลง Ms Office ใหม่ ก็เช่นกัน

4 จุดสำคัญในการตั้งค่า
On Current database > Document Window Options > choose Tabbed Documents
Client Settings > Confirm > unchecked 3 options
On Trust Center > Trust Center Settings > Message Bar > choose Never show...
On Trust Center > Trust Center Settings > Macro Settings > Enable all macro.....

07:29

Lecture นี้เป็นการแสดงวิธีการทำโปรแกรม Stock อย่างง่ายๆ ภายใน 5 นาที แต่สามารถนำไปใช้งานได้จริง ซึ่งแสดให้เห็นว่าคุณสามารถนำความรู้แต่ละบทไปใช้ง่ายได้จริง โดยไม่จำเป็นต้องเรียนจบหลักสูตรเสียก่อนจึงใช้งานได้

แล้วคุณจะพบว่า คุณสามารถทำงานเกี่ยวกับข้อมูลได้ดีขึ้นมากอย่างเป็นขั้นเป็นตอน

Section 2: ทำไมต้องทำฐานข้อมูล และทำอย่างไรถึงจะได้ฐานข้อมูลที่ถูกต้อง
07:07

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

การใช่้ Excel Pivot Table สาธิตความแตกต่างระหว่างข้อมูลปกติกับฐานข้อมูล Part 2
Preview
07:05
08:19

Normalization คือกฏพื้นฐานที่โปรแกรมเมอร์ทุกคนต้องมี

กฏแรกคือ Normal 1

สร้าง Drop down field ทุกครั้งที่มีการใช้ข้อมูลซ้ำๆ อย่างชื่อลูกค้า สินค้า ฯลฯ เพื่อ

  • ลดความผิดพลาดในการคีย์
  • เพิ่มความเร็วในการคีย์ โดยคีย์เพียงตัวหน้าไม่กี่ตัว Access ก็จะแสดงตัวเต็มให้เลือก
  • ทำให้ข้อมูลมีความเป็นหนึ่งเดียว ที่สามารถนำไปสรุปได้
  • หากต้องการแก้ไข สามารถแก้ไขได้จากข้อมูลหลักที่เดียว โดยไม่ต้องไปไล่แก้หมดทุกข้อมูล
  • ได้ Promotion จากการเชื่อมโยง อย่างสามารถเชื่องโยงชื่อลูกค้า ไปดึงที่อยู่ลูกค้าจากตารางข้อมูลหลักลูกค้ามาใส่ใน Sale Query ได้เลย
08:05

ช้อมูลในลักษณะ หนึ่งต่อหลาย อย่างเช่น

  • หนึ่ง Invoice มีหลายรายการ
  • หนึ่ง PO มีหลายรายการ
  • หนึ่ง งาน มีหลายขั้นตอน 
  • หนึ่ง พนักงาน มีประวัติหลายต่อเนื่องหลายเรื่อง

ส่วนของหลาย ต้องถูกคิดออกแบบเป็นแนวตั้ง อย่าง
Job No1, Process1
Job No1, Process2
Job No1, Process3
Job No1, Process4

การสร้างข้อมูลลักษณะนี้ในแนวนอน คือใส่ทั้งหมดในบรรทัดเดียว อย่าง  
Job No.1, Process1, Process2, Process3, Process4 อย่างนี้ หากมี Process5 เพิ่มขึ้นมา 
ใน Access จะทำได้ยาก เนื่องจาก Access ต่างจาก Excel ตรงมันเป็นการออกแบบล่วงหน้า User แก้ไข เพิ่มเติมเองไม่ได้ 


06:46

เพื่อสนับสนุนแนวคิดของการออกแบบแนวตั้ง สำหรับข้อมูลลักษณะ หนึ่ง ต่อ หลาย และหลีกเลี่ยงการพิมพ์ข้อมูล Job ซ้ำในทุก บรรทัด การแยกตารางสำหรับ หนึ่ง คือ Header ออกจาก หลาย คือ Details โดยทิ้ง Link ไว้สำหรับทั้ง 2 ตาราง ซึ่งก็คือ Job No. จึงเป็นคำตอบที่ดีที่สุด

05:15

ข้อมูลสำคัญส่วนใหญ่ จะถูกใส่ลงในช่องหมายเหตุ หากไม่มี Field หรือ ช่องให้ใส่
ดังนั้นโปรแกรมที่ดีจึงควรเพิ่ม Field ให้เพียงพอแก่การใช้งาน แทนที่จะปล่อยช่องหมายเหตุไว้ให้คีย์กันได้โดยอิสระ แล้วปล่อยให้ข้อมูลสำคัญสูญเปล่าไปอย่างน่าเสียดาย

06:08

เราอาจกล่าวได้ว่า ชื่ออะไรก็ตามที่ปรากฏในโปรแกรมของเรา หากไม่ใช่ข่้อมูล มันคือตัวแปร Variable ไม่ว่าจะเป็น ชื่อไฟล์ ชื่อ Table, Query, Form, Report หรือ Function ตลอดจนชื่อที่ตั้งขึ้นมาเพื่อรับค่าต่างๆ ตอนเขียน Code 

เมื่อมันเป็นตัวแปร กฏของตัวแปร คือ ห้ามซ้ำ เพราะโปรแกรมจะไม่รู้ว่าเราอ้างถึงอันไหน ดังนั้นการตั้งชื่อตัวแปรจึงต้องมีกฏเกณฑ์ เพื่อหลีกเลี่ยงปัญญา และกฏที่ว่าก็คือ

  • Unique มีได้แค่หนึ่งเดียว
  • สั้น เพื่อให้จำง่าย คีย์ง่าย ผิดน้อย จัดลงหน้าฟอร์มง่าย ไม่ยาวล้นฟอร์ม
  • ต้องไม่ปกติ เพราะถ้าใช้ชื่อปกติ อย่าง Name, ID หรือ Date ฯลฯ มันอาจไปซ้ำกับชื่อ Function หรือ Properties ของ Access ที่มีเป็นพันๅ
  • ห้ามมีวรรค เพราะ Access อาจมองเห็นเป็น 2 ตัวแปร
  • ห้ามมีเครื่องหมายต่างๆ เพื่อหลีกเลี่ยงความสับสน อย่าง + - * / 


แบบทดสอบเกี่ยวกับแนวคิดพื้นฐาน
4 questions
Section 3: วิเคราะห์ และออกแบบโปรแกรม
Article

ขั้นตอนการเขียนโปรแกรมประกอบไปด้วย 12 ขั้นตอนตามลำดับต่อไปนี้

  1. วิเคราะห์ระบบด้วยการคีย์ข้อมูลที่ต้องการทั้งหมดออกมาเป็นแนวยาวบน Excel
  2. ปรับปรุงรูปแบบด้วย Normalization แยกข้อมูลออกมาเป็นตารางใหม่ กรณีหนึ่งต่อหลาย และ สร้างตารางข้อมูลหลักขึ้นมาสำหรับ Drop down field ถ้ามี
  3. สร้างตารางใน Access ด้วยการ Copy จาก Excel ไป Paste ใน Access
  4. เพิ่มช่อง ID AutoNumber ให้เป็น Primary Key สำหรับทุกตาราง
  5. กำหนด Data Type (ประเภทของข้อมูล) ให้กับทุก Field ในแต่ละตาราง
  6. สร้าง Query ให้กับทุกตาราง
  7. สร้าง Form ที่เหมาะสมแก่การใช้งาน ให้แก่ทุกตาราง โดยต้องสร้างจาก Query เท่านั้น
  8. ใส่ระบบ Auto ทุกที่ทางที่สามารถใส่ได้ เพื่ออำนวยความสะดวกรวดเร็ว และความถูกต้องในการคีย์ 
  9. สร้างรายงานสำหรับ ติมตาม ตรวจสอบ ควบคุม ด้วย Query
  10. เตรียม Query สำหรับแบบฟอร์มต่างๆ ที่ต้องการพิมพ์ออกมา
  11. สร้างแบบฟอร์มสำหรับงานพิมพ์จาก Query ที่เตรียมไว้
  12. แปลงโปรแกรมเป็นระบบ Network สำหรับการใช้งานร่วมกันหลายคน ด้วยคำสั่ง Split Database


06:11

คีย์ข้อมูลทั้งหมดที่ต้องการลงบน Excel โดยพยายามครอบคลุมเนื้อหาให้ได้มากที่สุด แล้วนั่งดูไปเรื่อยๆ สักหลายๆวัน 
จะมีแนวคิดต่างๆเพิ่มเข้ามาเรื่อยๆ จนแน่ใจว่าไม่มีอะไรเพิ่มอีกแล้ว จึงลงมือขั้นตอนไป

02:55

มองหากลุ่มข้อมูลที่เข้าข่าย หนึ่ง ต่อ หลาย ซึ่งอาจต้องมีการเพิ่มเติมภายหลัง อันเป็นเหตุให้โปรแกรมตาย เพราะ User แก้ไขเองไม่ได้

03:26

แยกข้่อมูลลูกออกมาเป็นตารางใหม่

09:52

มองหาข้อมูลที่ต้องมีการคีย์ซ้ำๆ ทำการ Highlight สีไว้ แล้วทำตารางใหม่สำหรับข้อมูลหลักที่จะนำไปใช้ Lookup โดย Drop down

Article

แบบฝึกหัดการออกแบบฐานข้อมูลเพื่อทดสอบความเข้าใจ และ การนำใช้ Normal ทั้ง 4 สร้างฐานข้อมูลที่ถูกต้อง
Download โจทย์ และเฉลย ที่อยู่ในรูปแบบ Excel ไฟล์ได้จาก Resource ในบทนี้เลย

หมายเหตุ :  ควรทำโจทย์ก่อนดูเฉลย

Section 4: Table ตาราง ที่ใช้จัดเก็บข้อมูล
07:02

สร้างตารางใน Access ด้วยการ copy จาก Excel มา Paste บน Access อย่าลืมเอาหัวคอลัมน์ หรือ ชื่อ field มาด้วย
ส่วนชื่อตารางไป Rename เอาที่ Access

07:06

เพิ่มช่อง ID AutoNumber เป็น Primary Key ให้กับทุกตาราง เพื่อใช้สำหรับ Link กับตารางอื่น
เนื่องเพราะ Access ชอบการเขื่อมโยงด้วย ID มากกว่า Text เพราะมันประหยัดเวลาในการเทียบมากกว่า แน่นอนกว่า และเสถียรกว่า
ซึ่งถ้าหากเราสร้าง ID ให้ Access ใช้ในการเชื่อมโยงแล้ว Access จะมีความสุข และมี Promotion ในการสร้างความสัมพันธ์ให้เราแบบอัตโนมัติในทุกครั้งที่สองตารางที่มีการเชื่อมโยงได้เจอกัน

17:51

Text ข้อมูลประเภทตัวอักษร
ต้องมีการปรับขนาดจำนวนตัวอักษรให้เหมาะกับข้อมูล เพื่อประหยัดเนื้อที่โปรแกรม 
ถ้าไม่จำเป็น อย่าให้เลย 60 ตัวอักษร เนื่องจาก Text ที่มีขนาดเลย 60 ตอนสร้างฟอร์ม Access จะสร้างเป็น Text Box ที่มี Scroll Bar และ มีการขึ้นบรรทัดใหม่ให้ในช่องเดียวกัน เพื่อสามารถใส่ข้อมูลมากๆได้ ซึ่งอันนี้เป็นการหวังดีประสงค์ร้าย เนื่องจากเวลา User คีย์ข้อมูลมักไม่ค่อยดูจอ ทำให้เมื่อคีย์ข้อมูลแล้ว Enter ไปเรื่อยๆ ข้อมูลจะถูกจับใส่ขึ้นบรรทัดใหม่ลงในช่องเดิม ไม่เลื่อนไปไหน

Number ข้อมูลประเภทตัวเลข
ให้ใช้ Number กับข้อมูลที่เป็นตัวเลขที่ให้คำนวณจริงๆ เท่านั้น ถ้าเป็นพวกเลขอ้างอิง หรือ Reference ให้ใช้เป็น Text เพราะมีความเป็นไปได้ที่อาจมีการเพิ่มตัวอักษรเข้าไปใน Ref ในอนาคต ส่วนรูปแบบหรือ Format ของ Number ให้กำหนดดังนี้
  • Field Size:  Double
  • Format :  Standard
  • Decimal Places :  2 กรณีต้องการทศนิยมมากกว่า 2 ตำแหน่ง ก็ให้ระบุได้ตามต้องการ
  • Default Value : 0   ส่วนนี้สำคัญมาก หากไม่ใส่ 0 เวลานำ Field นี้ไปคำนวณ ผลจะออกมาเป็นไม่มีค่า หรือ ค่า Null เสมอ เนื่องจากอะไรบวก Null ก็ได้ Null อะไรลบ Null ก็ได้ Null

Date/Time
ถ้าไม่มีเวลามาเกี่ยวข้อง เอาแค่ วัน เดือน ปี ให้ใช้ Format เป็น Medium Date เสมอ เนื่องจาก Medium Date จะแสดงผลเดือนเป็นตัวอักษร อย่าง 13 มีค 59 ทำให้สามารถหลีกเลี่ยงความเข้าใจผิดเกี่ยวกับ 02/03 ซึ่งไม่รู้ว่าเป็นเดือน กพ หรือ มีค กันแน่


17:41

สิ่งที่ต้องจำไว้ตลอดเวลาคือ Drop Down เก็บตัวเลขคือ ID ไว้เสมอ หากเราได้เพิ่ม ID ไว้ทุกตารางแล้ว
ไม่ได้เก็บเป็น Text อย่างที่ตาเราเห็นตอนคีย์ข้อมูลลงไป

11:10

Relation หรือ ความสัมพันธ์ของข้อมูล 2 ตาราง เกิดจากการเชื่อมโยงของ Drop down field กับตารางที่ถูกอ้างถึง ซึ่งหากให้ ID กับทุกตารางตามขั้นตอนแล้ว Access จะมี Promotion เชื่อมความสัมพันธ์ให้ในหน้าต่าง Relation โดยอัตโนมัติ

ประเภทของความสัมพันธ์ แบ่งเป็น 2 ประเภทคือ 
ความสัมพันธ์แบบปกติ คือ เชื่อมโยงเพื่อทำ Drop Down ให้คีย์ง่าย และสามารถดึงข้อมูลจาก Field ที่เกี่ยวข้องได้
ความสัมพันธ์แบบ แม่ลูก หรือ Header กับ Details ซึ่งหากลบแม่ทิ้งแล้ว ต้องลบลูกออกด้วย เพื่อไม่ให้เป็นลูกกำพร้าที่ไม่อาจแสดงผลในโปรแกรมได้อีก กลายเป็นขยะสังคมในฐานข้อมูล ซึ่งความสัมพันธ์ลักษณะนี้ต้องมีการกำหนดให้ลบหายตามกันโดยการตั้งค่าความสัมพันธ์เป็นแบบ Enforce Referential Integrity และเลือก Cascade delete related recoreds

Article

จากโจทย์ Excel แนบให้ระบุข้อมูลที่ต้องหายตามกัน หากมีการลบข้อมูลของ Somchai  ออกจากตาราง EmployeeTbl

Section 5: Query คำสั่ง SQL ที่ใช้ดึงข้อมูลจากตารางตามเงื่อนไขที่ต้องการ
10:26

Equal to....  หมายถึงค้นตรงคำ
Does Not Equal to... ตัดคำที่เลือกออก
Sort from A-Z เรียงจากน้อยหามาก
Sort from Z-A เรียงจากมากหาน้อย
Filter จะแตกต่างกันไปสำหรับแต่ละประเภทข้อมูล
Text Filters - ใช้เพียงตัวเลือกเดียวคือ Contains....
Number Filters - ใช้เพียง Less than... กับ Greater than...
Date Filters - ใช้เพียง Between... and.....

11:07

การสร้างแบบสอบถามหรือ Query ที่มี เงื่อนไข (Criteria) เป็นค่าคงที่ หมายถึงค่าตายตัวไม่สามารถเปลี่ยนแปลงได้ ถึงแม้ในกรณีที่ใช้ Function Like อาจได้ข้อมูลแตกต่างกันบ้าง แต่ก็ต้องมีคำบางคำที่ถูกกำหนดไว้ตายตัว

08:19

เงื่อนไขแบบ Parameter เป็นการใช้ตัวแปร (Variable) มารับค่าที่ User จะคีย์ลงใน Input box 

ตัวแปรเปรียบได้กับ ตัวแปร X ตอนเราเรียน พิชคณิต ที่มักใช้ X มารับค่าที่ยังไม่รู้

ความแตกต่างระหว่างตัวแปรกับค่าคงที่ คือ ตัวแปร ต้องอยู่ในเครื่องหมายก้ามปู [ ] แต่หากเราพิมพ์เงื่อนไขลงไปเฉยๆ Access จะเห็นเป็นค่าคงที่ คือ Text และใส่เครื่องหมาย " " ให้สำหรับแสดงว่าเป็น Text ตามปกติ

15:04

การสร้าง Query ที่ค้นหาข้อมูลจากเงื่อนไขที่นำมาจากหน้า Form อันเป็นหน้าจอที่ User คีย์ข้อมูลเข้าเป็นปกติ นับเป็น Query ค้นหาที่นิยม และ มีบทบาทต่อระบบอัจฉริยะของโปรแกรมในการสือสารสองทาง ระหว่าง User กับโปรแกรม มากที่สุด 

ส่วนสำคัญที่สุดของการรับค่าหน้าฟอร์มคือการอ้าง Path หรือที่อยู่ของข้อมูลที่ต้องการนำมาทำเป็น Criteria ให้ละเอียดถูกต้องที่สุด เช่นเดียวกับการอ้างไฟล์ในระบบ Windows อย่าง

D:\Udemy\UdemyStock\Stock.xlsx - หมายถึง Stock.xlsx อยู่ใน UdemyStock และ UdemyStock อยู่ใน Udemy , ขณะที่ Udemy อยู่ใน Drive D: อีกที

ส่วนใน Access การอ้าง Path จะเป็นดังนี้

[Forms]![Form1]![Ename] - หมายถึง ตัวแปร Ename จะอยู่ใน Textbox ที่ชื่อ  [Ename] ที่อยู่ใน  [Form1] และ [Form1] อยู่ใน [Forms] และเนื่องจากชื่อทั้งหมดล้วนเป็นตัวแปร เราจึงต้องใส่ก้ามปู [ ] ครอบไว้ทุกตัว ส่วนเครื่องหมาย ตกใจ หรือ "!" มีค่าเท่ากับ "\" ใน windows path นั่นเอง


09:51

Group หรือ Summary Query เป็น Query ที่ทำไว้ดูเฉยๆ ไม่สามารถเพิ่ม ลบ แก้ไข หรือใช้เชื่อมโยงไปทำอะไรได้ เพราะแต่ละบรรทัด เป็นการรวมข้อมูลมาจากหลายบรรทัด

และนี่คือเหตุผลที่การทำ Group มักตามมาด้วยการเอาไปทำเป็นตารางใหม่ หรือ Make เพื่อให้ใช้งานได้นั่นเอง

สำหรับการใส่สูตรใน Group ให้ระลึกไว้เสมอว่า นอกจากตัวเลือก Group ที่ชื่อ Field ไม่เปลี่ยนแล้ว ตัวเลือกอื่นมีการเปลี่ยนชื่อหมด โดยจะเอาตัวเลือกนั้นๆ มาใส่หน้าชื่อ Field แล้วตามด้วย 'of' และชื่อ Field อยู่ท้ายสุด อย่าง SumOfSalary เป็นต้น

ส่วน Field สูตรทั้งหลาย ให้ใช้ตัวเลือก Expression

14:33

ความสามารถในการเปรียบเทียบ หรือ Matching ข้อมูลระหว่าง 2 ตาราง ถือเป็นผลประโยชน์ใหญ่หลวงของ Access ซึ่งสามารถนำไปใช้งานได้ดียิ่ง แม้จะยังเขียนโปรแกรมไม่ได้ก็ตาม เพราะมันสามารถลดงานได้อย่างมากมาย เมื่อเทียบกับการใช้ Vlookup ของ Excel ซึงทำได้ยาก และซับซ้อนมากๆ

เทคนิคของการ Match ที่ต้องจำคือการกำหนดวิธีเทียบ หรือ Join  ว่าจะเอาตารางไหนเป็นตัวหลัก โดยหัวลูกศรต้องชี้ออกจากตารางหลักไปยังตารางที่เราต้องการดึงข้อมูลมาเสริมเสมอ

Article

จากฐานข้อมูล MatchingExercise.accdb ถ้า ให้ Query ข้อมูลโดยมีเงื่อนไขดังนี้

  1. เอาเฉพาะ Vendor ขื่อ Abc Co., Ltd.
  2. เฉพาะข้อมูลปี 2009
  3. Product มีคำว่า Broad ปนอยู่
  4. จำนวนมากกว่า และ เท่ากับ 500
  5. เอาเฉพาะที่ทำจ่ายเงินแล้ว คือมีข้อมูลการจ่ายอยู่ในตาราง Payment แล้ว

หมายเหตุ : แนะนำให้ลองทำดูก่อน แล้วค่อยไปเทียบกับเฉลยที่อยู่ใน AnswerQ 


Section 6: การคำนวณ และการใส่สูตรใน Query
03:11

การใส่สูตรคำนวณใน Query ไม่ต่างกับ Excel เท่าไหร่ ผิดกันแค่ Access อ้างถึงชื่อ Field ขณะที่ Excel อ้างที่อยู่ cell 
และอีกอย่างคือ ไม่มีเครื่องหมาย = นำหน้า อย่างเช่น

Excel : [a3] =[a1] * [a2]
ถ้า [a3] เป็น "Amt", [a1] เป็น "Qty" และ [a2] เป็น"price"
สูตรใน Access : Amt: [Qty] * [price]

05:20

สูตรแปลงวันที่ ที่ใช้กันประจำมีไม่มาก อย่างหากเรามี Field ชื่อ [InvoiceDate] และต้องการแปลงเป็นปี เป็นเดือน เป็นวัน หรือ ปีเดือน สูตรจะเป็นดังนี้

Year = Year([InvoiceDate])
Month = Month([InvoiceDate])
Day = Day([InvoiceDate])
Year Month = Format([InvoiceDAte],"yyyy/mm")

07:32

การใช้ If ไม่มีอะไรต่างจาก Excel นอกจาก Access ใช้ iif คือมี i สองตัว แทนที่จะเป็น if มี i ตัวเดียวตามปกติ

ตัวอย่างการใช้ Iif

สำหรับเงื่อนไขเดียว - SalaryRange: iif([Salary] > 2000, "High", "Low")
หมายถึง ถ้า 'Salary' >2000, ผลที่ได้จะเป็นตัวแรกคือ High, แต่ถ้าผลที่ได้ไม่มากกว่า 2000 ผลที่ได้จะเป็นตัวที่ 2 คือ Low.

สำหรับเงือ่นไขมากกว่าหนึ่ง  formula will be - SalaryRange: iif([Salary] > 2000, "High", iif([Salary]>1000, "Medium", "Low")


Section 7: Action Query หรือคำสั่ง SQL เพื่อปรับปรุง เพิ่ม สร้าง หรือ ลบข้อมูล
07:24

การใช้ Query Make สร้างตารางใหม่ ส่วนใหญ่จะใช้กันในช่่วงแรกๆที่ยกข้อมูลเข้ามาจาก Excel แล้วทำ Group เพื่อนำไปสร้างข้อมูลหลักไว้ใช้ทำ Drop Down ตามแนวคิดของ Normal 1 อย่างการ Group ลูกค้า เพื่อสร้างตารางลูกค้า ไว้ไปทำเป็น Drop Down ในตาราง Sales เป็นต้น

13:33

Append Query นับเป็น Action Query ที่สำคัญมากที่สุดสำหรับระบบอัตโนมัติทั้งหลายที่ต้องการเพิ่มข้อมูลจำนวนมากเข้าตารางโดยไม่ต้องคีย์ที่ละบรรทัด อย่างเช่น

  • เพิ่มขั้นตอนงานที่มักจะเหมือนกันทุกครั้ง เข้าไปในตาราง Details ของ Job โดยไม่ต้องนั่งพิมพ์เข้าไปเองทุกครั้งๆทีละขั้น
  • เพิ่มข้อมูลห้องเช่าเข้าไปในตาราง Rent ทุกเดือน สำหรับติดตามการเก็บเงิน โดยไม่ต้องคีย์เข้าเองทุกเดือนๆละ 200 ห้อง
  • เพิ่มข้อมูลนักเรียนที่สอบผ่านเข้าไปเป็นชั้นเรียนใหม่
  • เพิ่มข้อมูล Order จากลูกค้า ซึ่งต่างคนต่างมีรูปแบบของตัวเอง เข้าไปในตาราง Order ของเราโดยไม่ต้องมานั่งจับใส่เองทุกครั้ง
Append 2 เพิ่ม
11:17
09:48

Update Query ส่วนใหญ่จะใช้ตอนต้นๆของการพัฒนาโปรแกรม เพื่อปรับปรุงข้อมูลที่นำเข้ามาจาก Excel ให้มีมาตรฐานเดียวกันสำหรับข้อมูลที่เป็นอันเดียวกัน อย่าง

Update Name from 
Netherland, The Netherland, Netherlands, Dutch, Holland.
to The Netherlands

อย่างไรก็ตาม Update Query ก็มีการใช้ในระบบอัตโนมัติอยู่บ้าง กรณีต้องการปรับปรุงยอดคงเหลือทั้งหมดเมื่อมีการเคลื่อนไหวของสินค้า

11:51

Delete Query ส่วนใหญ่ใช้เพื่อลบข้อมูลเก่าที่ไม่ต้องการแล้วออกจากฐานข้อมูล ซึ่งแน่นอนต้องมีการสำรองข้อมูลไว้ก่อนเสมอ

โดยส่วนตัวแล้ว หากเป็นการเขียนโปรแกรมเพื่อใช้เอง เรามักเปิด Table ทำการ Sort แล้วกด Delete ลบเอาง่ายๆ เนื่องจากปกติก็ไม่ยอมให้ใครลบได้ง่ายๆอยู่แล้ว

Section 8: สร้าง Form หรือหน้ากากที่ใช้ติดต่อกับ User
12:32

รูปแบบของฟอร์มที่ใช้กันส่วนใหญ่จะมีอยู่ 5 แบบ ให้เลือกใช้ตามความเหมาะสมของแต่ละงาน

  1. ฟอร์มที่อยู่ในรูปแบบของฟอร์ม หรือ Form View ทำจากตารางเดี่ยว ส่วนมากใช้สำหรับกรอกพวกข้อมูลหลักที่ค่อนข้างยาว มีรายละเอียดต้องกรอกมาก
  2. ฟอร์มที่อยู่ในรูปแบบตาราง หรือ Datasheet View ทำจากตารางเดี่ยว ใช้กับข้อมูลหล้กที่ค่อนข้างสั้น ข้อมูลที่ต้องกรอกไม่ล้นหน้าจอในแนวนอน
  3. ฟอร์มที่อยู่ในรูปแบบตาราง หรือ Datasheet View ทำจากตารางเดี่ยวเช่้นเดียวกัน แต่ถูกกำหนดให้เป็น Popup Form เพื่อใช้เรียกดูหรือใช้งานข้อมูลอื่นขณะไม่ต้องการออกจากหน้าฟอร์มที่กำลังทำงานอยู่
  4. ฟอร์มประเภทแม่ลูก หรือ Header กับ Details ที่ทำจากตารางมากกว่าหนึ่ง ในลัษณะฟอร์มแม่เป็น Form View ขณะที่ฟอร์มลูกเป็น Datasheet View เหมาะกับลักษณะงานที่แม่ลูกเกิดพร้อมกัน อย่าง Invoice, Purchase Order, Quotation ที่เราจะคีย์รายการสินค้าพร้อมกับหัว Invoice ที่ประกอบไปด้วย Invoice No., Invoice Date, Customers Name, Customers Address etc.
  5. ฟอร์มประเภทแม่ลูก ที่ทำจากตารางมากกว่าหนึ่ง แต่ทั้งฟอร์มแม่ และฟอร์มลูก จะเป็น Datasheet View ทั้งคู่ เหมาะกับงานที่มีการคีย์ข้อมูลแม่ไว้ก่อนแล้ว ส่วนตัวลูกมาคีย์ทีหลัง อย่าง นักศึกษาลงทะเบียนนักศึกษาก่อนแล้วระยะหนึ่ง จึงค่อยมาลงทะเบียนรายวิชาต่อทีหลัง ทำให้สามารถ Search หารายชื่อนักศึกษา เพื่อมากรอกรายวิชาได้ง่าย หรือการขึ้นทะเบียนเครื่องจักรไว้ก่อน แล้วค่อยมาลงรายการบำรุงรักษาทีหลังเป็นระยะๆ


04:19

วางแผนออกแบบฟอร์มให้เหมาะสมกับการใช้งาน สำหรับทุกตารางที่มีอยู่ โดยคำนึงความสะดวกในการใช้งานของ User แต่ละส่วน โดยไม่จำกัดว่า หนึ่งตาราง ต้องมีได้แค่ หนึ่งฟอร์ม

หนึ่งตารางอาจมีหลายฟอร์ม สำหรับการใช้งานแต่ละรูปแบบ หรือ หลายตารางอาจมีฟอร์มเดียว เพื่อความสะดวกในการกรอกสำหรับคนเดียวทำทุกอย่างก็ได้

05:05

การสร้างฟอร์ม ต้องสร้างจาก Query เท่านั้น 
ห้ามสร้างฟอร์มจากตาราง เพราะตารางไม่มีที่ให้ใส่สูตร และ ไม่สามารถดึงข้อมูลจากตารางที่มีความสัมพันธ์กันมาใช้งานได้

และอีกข้อที่สำคัญมากคือ 1 Form 1 Query หรือ 1 Report 1 Query 
ห้ามใช้ 1 Query ทำหลายฟอร์ม เพราะเวลาแก้ฟอร์มหนึ่ง อาจเผลอไปปรับปรุง Query ที่ใช้ร่วม ทำให้ฟอร์มอื่นอาจใช้งานไม่ได้

07:30

เมื่อใดที่ต้องการสร้างฟอร์มในลักษณะ Form View, Access จะมี Wizard ช่วยทำให้อย่างรวดเร็ว

แต่ต้องมีการตั้งค่ากันนิดหน่อยเพื่อความสะดวกในการใช้งาน
  1. ตั้งค่า Enable ตรงแถบ Data ใน Property Sheet ของ Field ID ให้เป็น "No" 
  2. แก้ปัญหา Text Box ที่มีค่ามากกว่า 60 ตัวอักษร ด้วยการไปที่แถบ Other ตรง Enter Key Behavior ให้เปลี่ยนจาก New Line in Field เป็น Default และที่แถบ Format ตรง Scroll Bars เลือก None แทน Vertical
  3. ปรับขนาด Text Box ให้เท่่ากับ Text Box อื่น เพื่อยืนยันว่าแก้แล้ว เมื่อมาดูอีกทีจะได้ไม่สงสัยว่าแก้ไปหรือยัง
11:49

ฟอร์มนอกเหนือจาก Form View ไม่มี Wizard ช่วย ต้องทำเอง

การสร้างฟอร์มลักษณะ Datasheet View เราต้องใช้ 2 ฟอร์ม คือ
  1. ฟอร์มเปล่า หรือ Blank Form มาทำเป็นพื้นหลัง เพื่อให้มีเนื้อที่สำหรับใส่ ชื่อฟอร์ม ใส่ปุ่ม ใส่กล่องค้นหา หรือ Search Box และด้วยเหตุที่มันเป็นฟอร์มเปล่า เราจึงต้องกำหนด Record Selectors และ Navigation Buttons ที่อยู่บนแถบ Format ใน Property Sheet ให้เป็น No เนื่องจากมันเป็นฟอร์มเปล่าที่ไม่มีข้อมูล 
  2. ฟอร์มลูกที่มีข้อมูลในลักษณะ Datasheet 
05:26

การสร้าง Popup Form ไม่ต่างกับการสร้างฟอร์มแบบ Datasheet View เลย
ผิดกันเพียงแค่การสร้าง Popup Form ต้องกำหนด Auto Center ที่แถบ Format บน Property Sheet เป็น Yes
และ Pop Up บนแถบ Other เป็น Yes เท่านั้น

06:32

สำหรับการสร้างฟอร์มแบบแม่ลูกในลํกษณะ Form View แทบไม่มีอะไรต้องทำมาก เพียวแค่เลือกตารางที่สัมพันธ์กันในลักษณะแม่ลูก 2 ตาราง แล้วให้ Form Wizard ทำให้เท่านั้น

12:16

การสร้างฟอร์มแม่ลูกประเภท Datasheet View นี้ค่อนข้างยุ่งยากเล็กน้อย เนื่องจากต้องมีการเขียน Code บ้าง กำหนด Property บ้าง

1. ต้องเขียน VBA (Visual Basic for Application) ที่เหตุการณ์ หรือ Event 'On Current' บน Property Sheet ของฟอร์มแม่ เพื่อกำหนดความเป็นแม่ โดยระบุชื่อฟอร์มลูกให้ชัดเจน พร้อมกำหนดให้ฟอร์มลูกปรับเปลี่ยนเมื่อมีการเลือกรายการอื่นบนฟอร์มแม่ คำสั่งจะเป็นดังนี้ หาก [In2SF] เป็นชื่อฟอร์มลูก

Me.Parent![In2SF].Requery

2. กำหนด Link Master Fields กับ Link Child Fields ที่อยู่ในแถบ Data บน Property Sheet ของฟอร์มลูกโดยใส่ชื่อ Field ที่มีความสัมพันธ์กันลงไป ขณะที่ชื่อ Field ของตัว Link Master Fields ต้องใส่ Path เต็มให้ถูกต้องด้วย เนื่องจากเรากำลังกำหนดค่าที่ตัวลูก เวลาอ้างถีงตัวแม่ที่อยู่ฟอร์มอื่น จึงต้องอ้าง Path ให้ถูก เพื่อให้ Access เข้าใจว่าจะให้เปลี่ยนรายการของตัวลูกตามอะไรบนตัวแม่

Article

ให้กำหนดรูปแบบ Form ที่เหมาะสมกับการใช้งานสำหรับโปรแกรมบุคคล ตามแบบทดสอบ FormAssignExercise.xlsx
โดยให้

1 =  Single Table Form View
2 = Single Table Datasheet View
3 = Single Table Popup Form
4 = Mother and Child Form View
5 = Mother and Child Datasheet View

Section 9: เขียน Code สร้างระบบอัตโนมัติ
16:04

ที่เดียวที่สามารถรวมยอด หรือ Sum ยอดได้คือที่ Form Footer และ Function Sum ที่ใช้คือ ถ้าต้องการ Sum field ที่ชื่อ [inamt]

sum([inamt])

11:56

เทคนิคการค้นหา หรือ Search จากหลาย Fields ไม่ว่าจะเป็น ชื่อ เบอร์โทรศัพท์ หรือ รหัสพนักงาน คือการสร้าง Field ใหม่ใน Query แล้วนำทุก Fields ที่ต้องการให้ค้นหาได้พร้อมกัน มารวมกันเป็นข้อมูลเดียวต่อเนื่องกันโดยใช้ code

[InDoc] & "-" & [InSup]  (มี "-" เป็นตัวเชื่อม)

และถ้าเป็นการค้นหาจาก Drop Down Fields ซึ่งปกติจะเก็บ ID ที่เป็นตัวเลข ให้ไปดึงเอาชื่อตัวจริงที่เป็นตัวอักษรจากตารางข้อมูลหลักที่สัมพันธ์กันมาใส่บน Query และสั่งค้นหาจาก Field ชื่อแทน

สำหรับ Code ของการ Search สามารถ copy ได้จาก Ebook 'Access Training Class' ที่ดาวน์โหลดในบทแรก

ระบบค้นหา Search Part 2
10:35
ระบบค้นหา Search Part 3
06:01
11:08

ตามปกติเลขอ้างอิง จะประกอบไปด้วย ตัวอักษรแสดงหมวดเรื่อง ตามด้วยปี และต่อด้วยเลขเรียงดังนี้

OutDoc : Out-2016-00001 = "Out-" & Year([OutDate]) & "-" Format([OutRef],"00000")

  1. ขั้นตอนการทำ Auto Reference
  2. เพิ่ม Field ชื่อ OutRef ที่ตาราง OutTbl เพื่อใช้ทำเลขเรียง Running Numbeer แล้วนำไปเพิ่มบน Query และ Form ตามลำดับ
  3. สร้าง Query เพื่อหาเลขเรียงล่าสุด หรือที่มากที่สุด (MaxOfOutRef) สำหรับ Criteria ปีที่รับค่ามาจากวันที่บนหน้าฟอร์มมาแปลงเป็นปี
  4. เขียน VBA Code โดยใช้ Function Dlookup มาดึงเอาเลขมากที่สุดจาก Query ที่เตรียมไว้ไป +1 แล้วใส่ในช่อง OutRef ที่หน้าฟอร์ม
  5. นำ OutRef ใหม่ที่ได้ไปประกอบ ชื่อหมวด และปี ตามรูปแบบด้านบน แล้วเอาไปใส่ใน OutDoc

หมายเหตุ : ทั้ง OutRef และ OutDoc ต้อง Disable ไว้ เพื่อไม่ให้ใครแก้ได้

VBA code ดูได้จาก Ebook: Access Training Class

การ Run เลขอ้างอิงอัตโนมัติ Part2
10:40
16:07

ขั้นตอนการทำระบบ Login เพื่อตรวจสอบ ชื่อผู้ใช้ และ รหัสผ่าน

  1. สร้างตารางสำหรับเก็บ User Name, Password และ Form ที่ต้องการให้สิทธิสำหรับผู้ใช้นั้นๆ โดยขอตั้งชื่อเป็น UpTbl
  2. สร้าง Admin Form เพื่อใช้เรียก UpTbl ให้ Admin ใช้่ดูแลเรื่อง User Name กับ Password และ Form สิทธิ
  3. สร้าง Form สำหรับทำงานในลักษณะเมนูศูนย์รวม เพื่อเรียกเปิด Form ต่างๆ ในกลุ่มงานที่เกี่ยวข้อง สำหรับ User ที่มีสิทธิเข้าถึงได้หลาย Form ในกลุ่ม ขอตั้งเป็น GroupF
  4. สร้าง Log In Form สำหรับใส่ User Name, Password เพื่อ Log in เข้าสู่ฟอร์มที่ตัวเองได้สิทธิ และให้ชื่อเป็น LoninF
  5. สร้าง Query ชื่อ UpQ จาก UpTbl โดยรับค่า Criteria ของ User Field จากหน้า LoginF เพื่อ Filter เอา Password และ Form ที่ให้สิทธิ 
  6. เขียน Code ที่ปุ่ม Login บน LoginF ใช้ Function Dlookup ไปดึง Password จาก UpQ มา check กับ Password ที่ User กรอกบนหน้าForm ถ้าตรงก็ให้ดึงชื่อ Form ที่ได้สิทธิตาม User นั้นๆ มาเปิด
  7. สร้าง LogTbl ไว้เก็บประวัติ หรือ Log ของผู้เข้าใช้งานว่ามีใครเข้ามาบ้าง วันไหน เวลาไหน
  8. สร้าง Append Query ชื่อ LogQ โดยรับค่า User Name จากหน้า LoginF ไปเพิ่มใส่ LogTbl เพื่อเก็บ Log

VBA Code ดูได้จาก  Ebook 'access training class'

Login username password Part 2
14:12
Login username password Part 3
06:15
15:47

การส่งค่าไปมา ถือเป็นหน้าตาของโปรแกรมทีเดียว โปรแกรมจะหรูหรา ทำงานง่ายเต็มไปด้วยระบบอัตโนมัติก็ด้วยระบบส่งค่า หรือ Copy และ Paste นี่เอง

เทคนิคช่วยจำสำหรับกฏของการ Copy ข้อมูล จาก Text Box หนึ่ง ไป Paste ใส่อีก Text Box หนึ่ง ตอนเขียน Code คือ
ตัวรับอยู่ซ้าย ตัวส่งอยู่ขวา อย่าง

[Forms]![recf]![R2SF]![R2Prod] = Me.ProdID

ตัวรับคือ R2Prod ขณะที่ตัวส่งคือ me.ProdID

12:52

บทนี้จะเป็นการสาธิต การใช้ระบบ Set Value ทำการตัด Stock ด้วยการ Double Click เพื่อ copy รายการรับที่ต้องการตัดไปใส่ฝั่งเบิกโดยเอา ID ของฝั่งรับติดไปด้วย เพื่อใข้อ้างอิงกลับว่าเบิกสินค้ามาจาก Lot ไหน และสามารถนำมาใช้ประโยชน์เกี่ยวกับเรื่องของ FIFO หรือ LIFO ได้ด้วย

09:06
  1. เพิ่มและเรียงวันที่ สำหรับ Receive Lot 
  2. Copy Standard Price ใส่ O2Price
  3. ทำ Search Box เพื่อค้นหา Lot ที่จะตัด
14:56

ใน Lecture นี้ เราจะแสดงวิธี นำยอดรวมการเบิก สำหรับแต่ละรายการเข้า ไป Update ใส่ในช่องยอดรวมเบิก ในตาราง R2Tbl เมื่อมีการกดปุ่ม Save หลังบันทึกการเบิก 

ขั้นตอนการทำคือ 

  1. สร้าง Group Query ชื่อ TotalQ โดย Group O2R2id และ Sum ยอดเบิกแต่ละรายการเป็นยอดเดียว
  2. เปลี่ยน TotalQ เป็น Make Query เพื่อใช้สร้างตารางใหม่ชื่อ TotalOutTbl เนื่องจาก Group Query ไม่สามารถนำไปใช้ Update ได้
  3. สร้าง Update Query จาก TotalOutTbl โดย Link กับ R2Tbl ด้วย R2ID เพื่อทำการ Update ยอดเบิกรวมของ ID นั้นๆ ไปยัง R2Tbl.
  4. เขียน VBA ที่ปุ่ม Save เพื่อเรียกใข้งาน Update Query
Section 10: รายงาน
17:19

เมื่อข้อมูลทั้งหมดถูกรวบรวมผ่านหน้าฟอร์มไปไว้ในตารางต่างๆ ที่ถูกออกแบบมาอย่างละเอียดแล้ว ก็มาถึงสิ่งที่เราต้องการแท้จริงจากการเขียนโปรแกรม นั่นคือการทำ Query เพื่อดึงเอาข้อมูลจากตารางต่างๆ หรือจากตารางที่มีความสัมพันธ์กันอยู่ ออกมาทำเป็นรายงาน ไม่ว่าจะเป็น รายงานเพื่อใช้ติดตาม ใช้ตรวจสอบ ใช้อ้างอิง หรือใช้สรุป แล้วส่งไปตกแต่งเป็นรายงานสวยๆต่อที่ Excel เนื่องจาก Excel สามารถตกแต่งความสวยงามได้อย่างง่ายดาย แถมยังใช้แนบ email ไปยังผู้เกี่ยวข้องได้ง่ายและเป็นธรรมชาติมากกว่า

ข้อควรระลึกคือ ไม่ว่าข้อมูลจะอยู่ที่ไหนในฐานข้อมูล เราสามารถดึงมันออกมาได้หมดด้วย Query และ Relation ไม่ต้องห่่วงว่าคีย์ไปแล้วจะดึงข้อมูล หรือ ดึงรายงานออกมาได้อย่างไร ขอเพียงออกแบบตารางให้มีข้อมูลที่ต้องการครบก็เพียงพอแล้ว

18:24

เพื่อสนับสนุนระบบ Paperless ปกติเราจะใช้วิธี Export ข้อมูลดิบจาก Query ที่เตรียมไว้สำหรับรายงาน ออกไปยัง Excel เพื่อไปใช้ความสามารถของ Excel Pivot ในการทำสรุป ซึ่งง่ายทั้งคนส่ง คนรับ และคนดู เพราะการส่งรายงานเป็นกระดาษดูได้มิติเดียวต่อหนึ่งรายงาน ขาดความคล่องตัว และค่อนข้างเปลืองเวลาสำหรับผู้บริหารที่มีเวลาค่อนข้างจำกัด

การเตรียม Query เพื่อส่งไปทำ Excel Pivot มีสิ่งสำคัญอย่างหนึ่งที่จำเป็นอย่างยิ่งคือ การแปลงวันที่เป็น Year Month ด้วยคำสั่ง

 Format([TransactionDate],"yyyy/mm")

เพราะทุกการสรุปย่อมต้องมียอดต่อเดือนเป็นสิ่งที่ต้องดูกันอยู่เสมอ

07:01

บาร์โค๊ต จริงๆแล้วคือ Font หรือรูปแบบตัวอักษรแบบหนึ่ง หาได้จาก Resource ที่ดาวน์โหลดไปตอนต้น 
ให้นำ Barcode Font นี้ไปไว้ใน Font Folder บน control panel
หลังจากนั้น เมื่อเปิด Access ขึ้นมาใหม่ ก็จะพบ Font ตัวนี้ให้เลือกเหมือนพวก Angsana UPC อะไรพวกนี้

ส่วนตัวอ่าน Barcode หรือ Barcode Reader มันเป็นเพียงอุปกรณ์อ่านข้อมูลเข้า PC เหมือน Mouse หรือ Keybroad ปกติ ต่างกันคือมันอ่าน Barcode Font ที่เป็น ขีดๆ แล้วแปลงกลับเป็นข้อมูลปกติเพื่อนำไปใส่ช่องที่เราเลือกค้างไว้ตอนยิง Barcode

15:35

ขั้นตอนการทำ Sticker Barcode ติดกล่อง อย่างพวก Shipping Mark ที่ต้องพิมพ์ป้ายจำนวน เท่ากับจำนวนกล่องที่กำหนด มีดังนี้  

  1. สร้างตารางใหม่ชื่อ LabelTbl  
  2. สร้าง Query ชื่อ LabelQ จาก LabelTbl เพื่อเอาไปทำ Label Report 
  3. สร้าง Label Report ชื่อ LabelRep จาก LabelQ 
  4. สร้าง Delete Query ชื่อ LabelDelQ เพื่อลบข้อมูลเก่าออกจาก LabelTbl ก่อน
  5. สร้าง Append Query ชื่อ LabelAppendQ เพื่อรับ Criteria จากหน้าฟอร์มสำหรับ Shipping Mark ที่จะพิมพ์ของ Transaction ใดๆ  
  6. สร้างปุ่มสำหรับกดเพื่อสั่งพิมพ์ป้าย 
  7. เขียนคำสั่ง VBA ที่ปุ่มพิมพ์ป้าย เพื่อสั่งให้ LabelAppendQ ทำการเพิ่มรายการที่จะพิมพ์เข้าไปในตาราง LabelTbl ในลักษณะวน Loop ตามจำนวนที่กำหนดเอง หรือเอาจากข้อมูลบนหน้า Form แล้วสั่งพิมพ์ LabelRep ที่ทำจาก LabelTbl ออกมา โดยใช้คำสั่ง DoCmd.OpenReport "LabelRp", acViewPreview โดยเน้นให้ Preview ให้ดูก่อน มิฉนั้นมันจะพิมพ์ออกเครื่องเลย

ตัวอย่าง Code VBA ที่จะเขียนกับปุ่มดูได้จาก Ebook 'access training class'


16:28

สำหรับหลักสูตรนี้ เราจะใช้ Object Report ของ Access เพื่อทำพวกฟอร์มพิมพ์เท่านั้น อย่างเช่น Invoice, Purchase Order, Quotation, Receipt เป็นต้น

ส่วนรายงานจริงๆ ปกติจะทำ Query เอา อย่างที่บอกไปแล้วในบทที่แล้ว

การสร้างแบบฟอร์ม หรือ Printed Form ด้วย Report ไม่ได้ยากอะไรนัก แต่ค่อนข้างเสียเวลาในการจัดแต่งเสียมากกว่า แต่ก็เป็นเพียงแค่เสียเวลาครั้งแรกครั้งเดียวเท่านั้น

สิ่งที่ต้องคำนึงในการสร้าง Printed Form มีเพียงเรื่องการวางข้อมูล Field ไหน ลงตรงส่วนไหนของแบบฟอร์มซึ่งมันมีอยู่หลายส่วน ต้องรู้ส่วนไหนวาง Header ส่วนไหนวาง Details ส่วนไหนวางตรง Group Header และนี่คือรายละเอียดของส่วนต่างๆ ที่มีใช้อยู่

  1. Report Header และ Report Footer - ข้อมูลที่วางบาง Report Header จะอยู่ตรงหัวของแบบฟอร์มที่หน้าแรกหน้าเดียว และเช่นกัน ข้อมูลที่วางตรง Report Footer - จะปรากฏที่ท้ายของข้อมูล (ไม่ใช่ท้ายกระดาษ) ตรงหน้าสุดท้ายที่เดียว
  2. Page Header และ Page Footer - ข้อมุลที่วางตรง Page Header จะอยู่ตรงหัวของกระดาษทุกหน้า และ ที่ Page Footer จะอยู่ที่ท้ายกระดาษทุกหน้าเช่นกัน
  3. Group Header และ Group Footer - ข้อมูลที่วางบน Group Header จะอยู่ตรงหัวของแต่ Group ข้อมูล และที่ท้ายของ Group สำหรับ Group Footer และตรงนี้คือที่ที่เราสามารถใส่สูตร  Sum, คำนวน VAT, หายอดรวมทั้งหมด ตลอดจนวางยอดรวมที่เป็นตัวหนังสือได้

Tip :
การเอาเส้นขอบของแต่ละ Field ออก ให้เลือก Fields เหล่านั้นก่อน แล้วเรียก Property Sheet ขึ้นมา แก้ Border Style ที่แถบ Format เป็น Transparent
การเอาสีสลับที่ Details ออก ให้คลิ๊กขวาที่พื้นที่ใดๆใน Details แล้วเลือก Property Sheet แก้ Alternate back color ที่แถบ Format เป็น  no color

สร้างแบบฟอร์มพิมพ์ด้วย Report 2
18:46
Section 11: การบริหารจัดการโปรแกรม
03:08

เพื่อลดขนาดไฟล์ที่เกินจำเป็นของเรา ที่เกิดจากการจองที่ข้อมูลที่เป็น Text มากเกินไป อย่างใช้แค่ 20 ตัวอักษร แต่ไปจองที่ไว้ 250 ตัวอักษร หรือกรณีที่โปรแกรมจำค่าต่างๆ ในการออกแบบไว้ ทำให้โปรแกรมใหญ่เกินเหตุ เราจำเป็นต้องทำการกระชับโปรแกรม หรือ Compact เป็นระยะเพื่อ clear พื้นที่กลับมา ทำให้ขนาดไฟล์เล็กลง

ข้อควรระวัง : อย่ากระชับ หรือ compact ขณะที่มีคนใช้งานโปรแกรมอยู่ เพราะมันเท่ากับ เปิดกระโปรงหน้าซ่อมรถ ขณะที่รถกำลังวิ่งอยู่ จะทำให้โปรแกรมพังได้ ดังนั้นการใช้คำสั่ง Compact on Close จึงไม่แนะนำ เพราะไม่รู้ว่าใครกำลังเปิดใช้อยู่

01:25

จริงแล้วการทำ Backup สำรองข้อมูล ก็คือการ copy แล้วไปเก็บใน Drive ไหน หรือ กระทั่งบน Flash Drive ก็ได้ เพื่อทำสองไว้ตามปกติ ซึ่งสามารถทำได้บ่อยครั้งตามที่ต้องการ เพราะโปรแกรมของ SME ตามปกติ จะไม่กินเนื้อที่มาก ขณะที่ Hard Disk ปัจจุบันมีเนื้อที่จัดเก็บมหาศาล


05:30

และแล้วก็ถึงเวลาต้องทำการปิดซ่อนเครืองไม้เครื่องมือ ตลอดจนสภาพแวดล้อมในการเขียนโปรแกรม เพื่อไม่ให้ User เข้าไปทำการแก้ไขได้ โดยสร้างปุ่มเพื่อ เปิดและซ่อนระบบออกแบบไว้ที่ AdminF เพื่อให้ Admin เป็นคนดูแล

ดู code VBA ได้ที่   Ebook 'access training class'

Section 12: แปลงโปรแกรมจาก Standalone เป็นระบบ Network เพื่อใช้ร่วมกันหลายคน
08:11

หลังจากเขียนโปรแกรมเสร็จ และทดลองผ่านเรียบร้อยแล้ว เราก็มาถึงจุดที่อาจต้องแปลงโปรแกรมให้เป็นระบบ Network กรณีต้องการสร้างโปรแกรมในระบบงานต่อเนื่องหลายแผนกหลาย User 

จากที่เราได้เรียนมาในบทแรกๆ เราได้ทราบว่าข้อมูลทั้งหมดอยู่ในตาราง  Query, Form หรือ Report เป็นเพียงแค่ Code ในการเรียกใช้ข้อมูลเท่านั้น ดังนั้นการแปลงข้อมูลเป็น Network หรือ Client Server มีสิ่งที่ต้องทำคือ การแยก Table ด้วยเมนู Split table ที่อยู่บน Database Tab ไปอยู่บน Server หรืออุปโลกน์ เครื่องใดเครื่องหนึ่งในระบบ Network ให้ทำหน้าที่เสมือน Server ซึ่ง Access จะไปสร้างไฟล์ขึ้นใหม่ในชื่อเดิมแต่มีคำว่า BE ต่อท้าย หมายถึง Back End

หลังจากแยกแล้วเราจะได้ไฟล์ 2 ไฟล์ หนึ่งคือ BE ซึ่งมีแต่ Tables ที่อยู่บน Server และอีกหนึ่งคือที่เหลือ ประกอบไปด้วย Query, Form, Report, Module พร้อมกับตัว Link ที่ชี้ไปยัง Tables ที่อยู่บน Server และตัวนี้เองที่เราจะเอาไป copy แจกทุก Users ที่เกี่ยวข้องที่อยู่บน Network เดียวกัน ให้ใช้ทำงาน

ข้อมูลทั้งหมดที่แต่ละ User คีย์เข้าไปในไฟล์โปรแกรมของเขาเหล่านั้น จะถูกส่งไปเก็บยัง Tables เดี่ยวกัน ที่อยู่บน Server ทั้งหมดจาก Link ที่ชี้ไป ดังนั้น User อื่นๆ จึงสามารถดึงข้อมูลที่มีอยู่บน Tables เหล่านั้นไปดูได้เช่นกัน เพราะบนโปรแกรมของเขาก็ Link ไปที่เดียวกัน

07:39

การแก้ไขปรับปรุงโปรแกรมหลังแยกตารางไปแล้วมีขั้นตอนดังต่อไปนี้ :

  • หากต้องแก้ตาราง ให้ทำการแก้ตารางที่ Server ก่อน เพราะตารางที่ตัว client เป็นเพียง Link เท่านั้น และแน่นอนก่อนแก้ไข ต้องให้ User ทุกคนหยุดใช้โปรแกรมก่อน 
  • สำหรับการแก้ที่ไม่เกี่ยวกับตาราง สามารถทำได้โดยไม่ต้องให้ User หยุดใช้งาน แต่มีขั้นตอนคือ ทำการลบ หรือ Delete Link ทั้งหมดออกก่อน เพื่อไม่ให้การทดสอบต่างๆมีผลกับข้อมูลจริงที่ใช้งานกันอยู่ หลังจากนั้นก็ทำการ Import ตารางจาก Server กลับเข้ามาในตัว Client เป็น Standalone อย่างเดิม แล้วค่อยลงมือแก้ไขปรับปรุงได้ตามต้องการ
  • กรณีโปรแกรมเป็น Standalone อยู่แล้ว ก่อนแก้ไขควร Copy Backup ไว้ก่อน เพื่อใช้สำหรับตอน Import ตารางกลับหลังแก้ไขแล้ว
  • หลังแก้ไขเรียบร้อยแล้วไม่ว่าจะเป็น Standalone หรือ Network ให้ Split ตารางทิ้งไปที่ Desktop เพื่อลบทิ้งภายหลัง 
  • สำหรับ Standalone ลบ Link ทั้งหมดออกแล้ว Import ตารางจริงจากที่ copy ไว้กลับเข้ามา 
  • สำหรับ Network ลบ Link ทั้งหมดแล้วคลิ๊กขวาที่ Link เลือก Linked Table Manager เพื่อปรับเปลี่ยน หรือ Switch Link กลับไปยัง Server ที่มีตรารางจริงที่กำลังใข้งานกันอยู่ตามเดิม
  • ลบตัว BE ที่ Split ทิ้งออกมาที่ Desktop
Section 13: Tip and Technique
10:39

การปรับปรุง Font  เปลี่ยน Caption/Label ใส่สี ใส่ภาพ ตกแต่ง โปรแกรม ควรทำหลังจากเขียนโปรแกรม และ ทดลองใช้ สำเร็จแล้ว เนื่องจากปกติจะมีการปรับปรุงแก้ไข ลบทิ้ง เขียนใหม่ ไปอีกระยะใหญ่มาก จึงไม่ควรเสียเวลาไปกับการตกแต่งก่อน จนกว่าจะได้โครงสร้างโปรแกรมที่ถูกต้อง และทดลองใช้งานจริงมาระยะจนโปรแกรมนิ่งพอสมควรแแล้ว ค่อยทำการตกแต่งแก้ไขทีเดียว

09:22

หลายครั้งที่ข้อมูลเริ่มต้นเป็นการเก็บข้อมูลบน Excel แบบแนวนอน ไม่ใช่แนวตั้งตามลักษณะการออกแบบฐานข้อมูลที่ถูกต้อง
เทคนิคการแก้ไขจากแนวนอน เป็นแนวตั้งคือการใช้ Append Query เข้าช่วย

05:22

กรณีต้องการเขียนโปรแกรมใหญ่ครอบคลุมทั้งระบบ อย่าง ERP (Enterprise Resource Planning) หรือ CRM (Customer Relationship Management) การที่จะใส่ทุกตารางที่เกี่ยวข้องลงไปในไฟล์เดียวหรือโปรแกรมเดียวอาจเยอะไป ซับซ้อนไป ทำงานยาก

วิธีที่ถูกควรค่อยๆทำทีละเรื่อง หรือ ทีละแผนก แยกเป็นโปรแกรมๆ และทำให้สำเร็จ พร้อมทดลองใช้เรียบร้อยแล้วระยะหนึ่งก่อน จึงค่อยทำโปรแกรมที่เกี่ยวเนื่องต่อ โดยใช้ Table Link เป็นตัวเชื่อมดึงเฉพาะตารางที่มีความสัมพันธ์กันมาใช้ และค่อยๆ ทำต่อไปอย่างนี้จนจบ

หมายเหตุ : การทำทั้งหมดพร้อมกันทีเดียวสำเร็จได้ยาก เนื่องจากการแก้ไขปรับปรุงต่อเนื่องของแต่ละ Module อาจต้องล้มโปรแกรมทั้งหมด เพราะโครงสร้าง แนวคิด หรือ การออกแบบ ผิด จากการเข้าใจเนื้องานแตกต่าง หรือ เก็บรายละเอียดได้ไม่หมด

17:43

Auto Import มีลักษณะการทำงานเหมือมกับที่เรียนกันไปแล้วในเรื่องของ Append ครับ แต่ต่างกันตรงที่เราต้องการกดปุ่ม Import เข้ามาเพิ่มในตารางที่มีอยู่โดยอัตโนมัติ ไม่ต้อง Copy แล้ว Paste แล้วไป Run Query เอง 

เทคนิคที่ต้องรู้มีเพียงอย่างเดียว คือ ตัว Excel File ที่ต้องการ Import ต้องวางไว้ใน Path หรือ Folder เดียวกับ Access Project 

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

I'm handling logistic and supply chain for more than 20 years.

Since it is chain operation, I know if I want to work well on my job I needed data from all parties concerned, no matter from Sales, Purchase, Planning, Store, Production, Warehouse or even my own Logistic, including Accounting and HR.

In the past, I had no real time data on hands, I'm blind. What I did, is just dump everything in as much to prevent shortage of material which will cause more worse on time and wages than space and interest paid for inventory. However, that's not a real solution, caused I finally, ran out of space. Dead and slow, scattered around my store by such a dumping.

Then, I happened to realize that what I seriously needed is a Data and it is the only best solution to out of the mess. That's where my first course in IT began.

I took PPD (Professional Programming Developer) course for 2 years, and hang on with Ms Access for over 20 years after that, because I learnt that Access is best fit for me. I'm not a programmer by the original. I just want some easy tool that can build up program for me and my chain on the fast track with highest mobility since trial and error is inevitable.

Access do the best job for me, whenever I need someone to give me info on real time, I give them my program interface. Once they key in, I got it! and all problem solved before it goes on big. And that's where my Mini ERP started.

Since I got a lot of benefit from Access to my own Job, I'm willing to share it out to the one who are in the same situation or one who have in mind on how to improve their career part or their own organization, but no tool to express it out for real. I, then, open my private Access Training Class to give people all what I know from 22 years experience accumulated. And it's already 5 years passed with more than 200 peoples being direct train up, and over 200,000 on YouTube, but I still willing to give more message to the rest that still keep on finding some tools to answer their requirement on data concerned jobs. So I create this course to share more.

Areas of Expertise

-Microsoft Access
-Logistic and Supply Chain
-ERP (Enterprise Resource Planning)
-Shipping and forwarding
-Account and Finance
-Banking and Forex
-Life programming








Ready to start learning?
Take This Course