Logistic and Supply Chain by Microsoft Access
5.0 (1 rating)
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.
11 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Logistic and Supply Chain by Microsoft Access to your Wishlist.

Add to Wishlist

Logistic and Supply Chain by Microsoft Access

เขียนโปรแกรมบริหารงาน Logistic อย่างง่าย ด้วย MS Access
5.0 (1 rating)
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.
11 students enrolled
Last updated 7/2017
Thai
Curiosity Sale
Current price: $10 Original price: $35 Discount: 71% off
30-Day Money-Back Guarantee
Includes:
  • 5.5 hours on-demand video
  • 4 Articles
  • 10 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • รู้จัก Logistic Supply Chain มากขึ้น
  • เห็นความสำคัญของการจัดเก็บข้อมูลที่จำเป็นอย่างยิ่งต่อการบริหารจัดการงานต่างๆ
  • สามารถมองงานได้ทั้งระบบ รู้ความจำเป็นของระบบทีม ที่ต้องการความสอดคล้องต่อเนื่อง
  • สามารถเขียนโปรแกรมใช้เองได้ โดยไม่ต้องพึ่งโปรแกรมเมอร์
  • แก้ไขปรับปรุงโปรแกรมได้ด้วยตัวเองตลอดเวลา
  • ได้เรียนรู้การเขียนโปรแกรมด้วย MS Access ซึ่งสามารถนำไปประยุกต์ใช้ในการเขียนโปรแกรมอื่นๆต่อไปได้
View Curriculum
Requirements
  • ต้องมีพื้นฐานการใช้ Excel ตามปกติ
  • ควรมีพื้นฐานความรู้ด้านการบริหารจัดการระดับหนึ่ง
Description

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

การจะทำอย่างนี้ได้ ผู้บริหารต้องมีระบบที่สอดคล้องชัดเจน และแน่นอน ต้องมีข้อมูล !  

การบริหารแบบตัวใครตัวมัน ไม่สามารถอยู่ในสารบบการแข่งขันในยุค IT เฟื่องฟูได้อีกต่อไปแล้ว 

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

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

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

Who is the target audience?
  • ทุกคนที่อยู่ในกระบวนการ Logistic Supply Chain ตั้งแต่ผู้ประกอบการ ฝ่ายขาย จัดซื้อ ผลิต คลัง ขนส่ง บัญชี
  • โปรแกรมเมอร์ ที่ต้องใช้ MS Access ทำ Prototype
  • นิสิต นักศึกษา ด้าน IT, Logistic และ การบริหารจัดการ
  • ประชาชนทั่วไปที่ต้องการติดอาวุธให้ตัวเอง เพื่อ upgrade วิชาชีพ
Students Who Viewed This Course Also Viewed
Curriculum For This Course
49 Lectures
05:40:30
+
Introduction
4 Lectures 29:05

ยินดีต้อนรับสู่หลักสูตร เขียนโปรแกรมควบคุมระบบ Logistic and Supply Chain อย่างง่ายด้วย Microsoft Access
หลักสูตรนี้ไม่ได้มุ่งสอนให้ผู้เรียนเป็นโปรแกรมเมอร์ หรือสอนการใช้งานทุกเครื่องมือของ Access โดยละเอียด 
แต่จะเน้นเรื่องการสร้างระบบ Logistic อย่างง่ายๆ ด้วย Microsoft Access เพื่อให้ผู้เรียนได้เข้าใจภาพรวมของระบบที่ต้องการ ตลอดจนความสำคัญของข้อมูลที่จำเป็นต่อกระบวนการ ทำให้สามารถแก้ปัญหาการขาดข้อมูลในการทำงานต่อเนื่องระหว่างฝ่ายต่างๆที่เกี่ยวข้องกันเป็นลูกโซ่ หรือ Supply Chain ได้

หวังเป็นอย่างยิ่งว่า หลังจบหลักสูตร อย่างน้อยผู้เรียนก็จะเข้าใจระบบ Logistic & Supply Chain ได้ชัดเจนยิ่งขึ้น และเกิดมุมมองในลักษณะของโปรแกรมเมอร์ จนสามารถสื่อสารความต้องการกับโปรแกรมเมอร์ หรือสร้าง Prototype (ตัวต้นแบบ) แนวคิดที่ต้องการให้โปรแกรมเมอร์ดูได้ ซึ่งจะทำให้ประหยัดค่าใช้จ่ายในการวิเคราะห์ระบบได้อย่างมาก

Preview 10:49

ดาวน์โหลดตัวอย่างและทรัพยากรต่างๆที่ใช้ประกอบการสอน พร้อมตัวโปรแกรม Logistic & Supply Chain ที่มี code และระบบต่างๆ ที่ทำในหลักสูตรนี้ ได้ที่นี่

ดาวน์โหลด Resource ได้จากบทนี้
00:02

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

ซึ่งกระบวนการเหล่านี้จำเป็นต้องมีข้อมูลถึงกันหมดทุกฝ่ายที่เกี่ยวข้อง การทำงานถึงจะต่อเนื่อง ไม่สะดุดติดๆหยุดๆ

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

สามารถดาวน์โหลดตัวแบบ Excel และตัวโปรแกรม Access ได้ที่นี่เลยครับ

Preview 08:42

หลักสูตรย่อยแสดงการสร้างโปรแกรม Logistic ด้วย Access เพื่อให้มองเห็นภาพการทำงานคร่าวๆ

หมายเหตุ: Function 'Nz' ในตัวอย่างโปรแกรมมีไว้เพื่อดัก 'Error' กรณี Module ใด Module หนึ่งไม่มีค่า คือยังไม่มีรายการ ค่าที่ได้จาก Query จะเป็นค่า Null ซึ่งบวกลบไม่ได้

Preview 09:32

Logistic & Supply Chain คือกระบวนการที่ต้องทำงานกันต่อเนื่องเป็นทีมโดยไม่มีการสะดุดหยุดนิ่งในจุดใดจุดหนึ่ง อันอาจนำมาซึ่งความล้มเหลวของทุกแผนต่อเนื่อง เป็นเหตุให้ ล่าช้า ผิดพลาด ขาดทุน ปราศจากความน่าเชื่อถือ ดังนั้นข้อมูลทั้งระบบสายโซ่ ต้องถูกแชร์กันในทีม เพื่อช่วยกันดูช่วยกันตาม และรู้ทุกความเคลื่อนไหว ของทุกฝ่าย เพื่อประคับประคองให้ทุกอย่างเป็นไปตามแผน

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

Pretest พื้นฐานความรู้ด้านข้อมูล Logistic
3 questions
+
ออกแบบโปรแกรม
5 Lectures 19:30

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

  1. ภาษาอังกฤษ เพื่อให้โปรแกรมทำการประมวลได้เร็วขึ้น เนื่องจากภาษาไทยมี สระ พยัญชนะ วรรณยุกต์
  2. สั้น ทำให้จำง่ายโอกาสพิมพ์ผิดน้อย ง่ายต่อการออกแบบฟอร์ม
  3. ต้องตั้งให้อ่านไม่ออกโดยการเอาตัวอักษรหน้าของตารางมาใส่หน้า Field เพื่อกันชื่อที่ตั้งไปซ้ำกับ Function ของ Access
  4. ไม่มีวรรค เพื่อไม่ให้ Access เข้าใจผิดว่าเป็นตัวแปร 2 ตัว
  5. ไม่ใส่เครื่องหมายใดๆ ที่อาจทำให้ Access เข้าใจผิด เป็น บวก ลบ คูณ หาร ฯลฯ
  6. ไม่ซ้ำ เพราะหากมีซ้ำ Access จะไม่รู้ว่าชื่อที่เราอ้างถึงหมายถึงตัวแปรตัวไหน

จากนั้นก็ทำการพิจารณาว่า Field ไหนควรทำเป็น Drop Down ให้เลือกแทนการเปิดว่างให้ Key เพื่อหลีกเลี่ยงการพิมพ์ผิด และเพื่อให้ได้ประโยชน์ต่อเนื่องอื่นๆ
หลักเกณฑ์ในการพิจารณา คือซ้ำๆ ห้ามคีย์ ตัวอย่างเช่น ชื่อลูกค้า ชื่อสินค้า เป็นต้น
หมายเหตุ : ไม่ทำ Drop Down สำหรับ ตัวเลข กับ วันที่ เนื่อจากทำไปโอกาสผิดก็ยังมีอยู่เต็มที่เหมือนเดิม

ทุก Drop Down ต้องมี Support Table ที่จะถูกนำไปเป็นแหล่งข้อมูลใน Drop Down ก่อน

ดาวน์โหลดตัวโครงสร้างต้นแบบ Structure.xlsx ได้ที่นี่ 


Preview 10:33

รูปแบบการออกแบบ Purchase เหมือนกัน Sales สามารถดู Structure Excel ได้จาก Structure.xlsx ที่ดาวน์โหลดในเรื่อง การออกแบบ Sales

ออกแบบระบบจัดซื้อ - Purchase
02:17

รูปแบบการออกแบบ Receive เหมือนกัน Sales สามารถดู Structure Excel ได้จาก Structure.xlsx ที่ดาวน์โหลดในเรื่อง การออกแบบ Sales

ออกแบบระบบคลังสินค้า - Store
03:00

รูปแบบการออกแบบ Invoice เหมือนกัน Sales สามารถดู Structure Excel ได้จาก Structure.xlsx ที่ดาวน์โหลดในเรื่อง การออกแบบ Sales

ออกแบบระบบจัดส่ง - Invoice
03:33

จากข้อมูลบุคคล หรือ Human Resource ที่อยู่บน 'HR' sheet ในตัวอย่าง Excel (ดาวน์โหลดได้จากที่นี่) 
ให้พิจารณาว่า คอลัมน์ หรือ Fields ไหนควรทำ Drop Down เพื่อป้องกันความผิดพลาด และเพื่อความรวดเร็วตอนกรอกข้อมูล

หมายเหตุ : ตัวเฉลยจะอยู่ใน 'Answer' sheet ใน Excel ไฟล์เดียวกัน (ควรลองทำดูก่อน แล้วค่อยไปเทียบกับเฉลย เพื่อทบทวนความเข้าใจ)

แบบทดสอบการพิจารณาว่า Fields ไหนควรทำ Drop Down
00:07
+
สร้างฐานข้อมูล
4 Lectures 31:53

ตั้งค่า 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.....

สร้างไฟล์โปรแกรม และตั้งค่า MS Access
04:42

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

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

สร้างตาราง - Table
07:47

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 ซึ่งไม่รู้ว่าเป็นเดือน กพ หรือ มีค กันแน่

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

Preview 11:53

ปรับแต่งประเภทข้อมูล 2 - Data Type และ ทำ Dropdowns
07:31

Data Type ของข้อมูลแต่ละประเภท จะมีเรื่องราวของ Field Properties ต่างกัน ให้หาคำตอบที่ถูกต้องสำหรับเรื่องราวที่ต้องจำของแต่ละ Data Type

แบบทดสอบเกี่ยวกับ Data Type
4 questions
+
สร้างแบบสอบถาม - Query
3 Lectures 14:51

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

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

สร้าง Query สำหรับทุกฟอร์ม
05:21

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

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

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

เขียนสูตรใน Query และกำหนด Join
09:15

จากภาพการเชื่อมโยงระหว่าง 2 ตาราง คือ SaleTbl กับ CustomersTbl ที่อยู่บน 'Exercise1' sheet ในตัวอย่าง Excel (ดาวน์โหลดได้จากที่นี่)  ให้พิจารณาว่าการกำหนด Join ระหว่าง 2 ตารางนี้ ลูกศรของเส้น Link ควรชี้จากตารางใดไปตารางใด หากวัตถุประสงค์การเชื่อมโยงเป็นไปเพื่อดึงข้อมูลที่อยู่ลูกค้าจาก CustomersTbl มาประกอบข้อมูลขาย

จากภาพการเชื่อมโยงระหว่าง 2 ตาราง คือ SaleTbl กับ ProductTbl ที่อยู่บน 'Exercise2' sheet ในตัวอย่าง Excel เดียวกัน  ให้พิจารณาว่าการกำหนด Join ระหว่าง 2 ตารางนี้ ลูกศรของเส้น Link ควรชี้จากตารางใดไปตารางใด หากวัตถุประสงค์การเชื่อมโยงเป็นไปเพื่อดึงข้อมูลราคากลางจาก ProductTbl มาประกอบข้อมูลขาย

หมายเหตุ : ตัวเฉลยจะอยู่ใน 'Answer1' และ 'Answer2' sheet ใน Excel ไฟล์เดียวกัน (ควรลองทำดูก่อน แล้วค่อยไปเทียบกับเฉลย เพื่อทบทวนความเข้าใจ)

แบบทดสอบความเข้าใจเกี่ยวกับการกำหนด Join Properties
00:15
+
สร้างฟอร์ม - Form
6 Lectures 27:04

การสร้างฟอร์มลักษณะ Datasheet View เราต้องใช้ 2 ฟอร์ม คือ

  1. ฟอร์มเปล่า หรือ Blank Form มาทำเป็นพื้นหลัง เพื่อให้มีเนื้อที่สำหรับใส่ ชื่อฟอร์ม ใส่ปุ่ม ใส่กล่องค้นหา หรือ Search Box และด้วยเหตุที่มันเป็นฟอร์มเปล่า เราจึงต้องกำหนด Record Selectors และ Navigation Buttons ที่อยู่บนแถบ Format ใน Property Sheet ให้เป็น No เนื่องจากมันเป็นฟอร์มเปล่าที่ไม่มีข้อมูล 
  2. ฟอร์มลูกที่มีข้อมูลในลักษณะ Datasheet 
การแก้ปัญหา Text Box ที่มีค่ามากกว่า 60 ตัวอักษร 
  1. เปิด Property Sheet ของ Text Box นั้นๆ
  2. ไปที่แถบ Other ตรง Enter Key Behavior ให้เปลี่ยนจาก New Line in Field เป็น Default และที่แถบ Format ตรง Scroll Bars เลือก None แทน Vertical
  3. ปรับขนาด Text Box ให้เท่่ากับ Text Box อื่น เพื่อยืนยันว่าแก้แล้ว เมื่อมาดูอีกทีจะได้ไม่สงสัยว่าแก้ไปหรือยัง
สร้างฟอร์มสำหรับ Support Data และการแก้ปัญหา Text อ้วน
12:32

สร้างฟอร์มขายด้วยการสร้างฟอร์มเปล่าจาก Form Design และลากตัว SaleQ มาวางเป็น Subform ซึ่งจะอยู่ในรูปแบบของ Datasheet View

Preview 02:25

สร้างฟอร์มซื้อด้วยการสร้างฟอร์มเปล่าจาก Form Design และลากตัว PurchaseQ มาวางเป็น Subform ซึ่งจะอยู่ในรูปแบบของ Datasheet View

สร้างฟอร์มจัดซื้อ
01:58

สร้างฟอร์ม Receive ด้วยการสร้างฟอร์มเปล่าจาก Form Design และลากตัว RecQ มาวางเป็น Subform ซึ่งจะอยู่ในรูปแบบของ Datasheet View

สร้างฟอร์ม Store
01:19

สร้างฟอร์ม Invoice ด้วยการสร้างฟอร์มเปล่าจาก Form Design และลากตัว InvoiceQ มาวางเป็น Subform ซึ่งจะอยู่ในรูปแบบของ Datasheet View

สร้างฟอร์มจัดส่ง
01:28

Code ที่ใช้เขียนกับปุ่มต่างๆที่ใช้เปิดฟอร์มแต่ละฟอร์ม คือ

DoCmd.OpenForm "ชื่อฟอร์มที่ต้องการเปิด"

ตัวอย่าง ถ้าจะให้ปุ่นทำงานโดยไปเปิดฟอร์ม Sale ขึ้นมา ชื่อฟอร์มก็จะเป็น

DoCmd.OpenForm "salef"

หลังสร้างฟอร์มหลักเสร็จแล้วต้องไปตั้งค่าให้ฟอร์มหลักถูกเปิดขึ้นมาก่อน ทุกครั้งที่มีการเปิดโปรแกรม โดย

ไปที่ File > Options > Current Database > Display Form: เลือก MainF

สร้างฟอร์มหลักของโปรแกรม
07:22

แบบทดสอบนี้จะเป็นการทบทวนการแก้ปัญหาต่างๆในการสร้างฟอร์ม

แบบทดสอบการแก้ปัญหาทั่วไปในการสร้างฟอร์มแบบ Datasheet View
3 questions
+
เขียนระบบอัตโนมัติ - Automation
14 Lectures 02:16:11

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

sum([invamt])

และหากต้องการยกยอดรวมจาก Form Footer มาแสดงใน Text Box บนฟอร์มเปล่าเพื่อให้เห็นยอดรวม ให้อ้าง path ของตัว Sum ที่อยู่บน Form Footer ให้ถูกต้องด้วย ดังตัวอย่างนี้

=InvoiceSF!suminvamt

รวมยอด - Sum
07:59

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

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

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

สำหรับ Code ของการ Search

Dim FT As String
FT = Me.St
Me.InvoiceSF.Form.Filter = "[invsearch] LIKE '*" & FT & "*'"
Me.InvoiceSF.Form.FilterOn = True
Me.St = Null


ระบบค้นหา - Search
14:02

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

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

Me.SPrice = Me.PPrice

ตัวรับคือ SPrice ขณะที่ตัวส่งคือ PPrice

ระบบรับส่งค่า/ข้อมูล - Set Value
08:44

ดาวน์โหลดตัว Excel จำลองข้อมูลสถานการณ์ เพื่อให้เห็นภาพรวมการทำงานของระบบได้ที่นี่

ภาพรวม
09:16

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

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

สำหรับการแก้ปัญหาค่า Null (ไม่มีค่า) ให้ใช้ Function NZ ดังนี้
SaleBacklog: [sqty]-Nz([sumofinvqty],0)

Preview 08:01

จะทำ Purchase Backlog หรือยอดสั่งซื้อค้างรับ ต้องไป Group Sum เพื่อรวมยอดตัว Receive ต่อ 1 Purchase Order ก่อน แล้วค่อยทำ BLPurQ โดยเอาตัว Group Sum Received มาเชื่อมกับ Purchase เพื่อหักออกจากยอด Purchase อีกที ก็จะได้ตัว Purchase Backlog

รายการซื้อค้างรับ - Purchase Backlog
05:01

จะทำ Receive Backlog หรือ Stock ต้องไป Group Sum เพื่อรวมยอดตัว Invoice ต่อ 1 Receive ก่อน แล้วค่อยทำ BLStockQ โดยเอาตัว Group Sum Received มาเชื่อมกับ Receive เพื่อหักออกจากยอด Receive อีกที ก็จะได้ตัว Receive Backlog หรือ Stock

รายการสินค้าคงคลัง - Stock Balance
05:01

หายอด Needed Order ด้วยการ Group แล้ว Sum หายอดคงค้างของ Purchase และ Stock (Receive) ทั้งหมด แล้วนำมาหักจากยอด Sales คงค้าง ก็จะได้ยอดที่ต้องสั่งซื้อเพิ่มถ้ายอด Needed Order ออกมาติดลบ คือของไม่พอ

หมายเหตุ : จะสังเกตุได้ว่าตัว Backlog Need Order สำหรับ Sale กับ Stock เรามีการใส่ Criteria <>0 ตรงช่อง Backlog สุดท้ายทั้งคู่ แต่ไม่มีการใส่ Criteria <>0 ใน Purchase เหตุเพราะ Purchase เป็นตัวกลางในการเชื่อมโยง หากสั่งซื้อ 100 แล้วของเข้า 100 PurBacklog จะกลายเป็น 0 และถูกคัดออก การเชื่อมโยงจาก Sale ถึง Stock ที่ยังคงมีของอยู่จะขาดตอนไม่แสดงผล เนื่องจาก Purchase ไม่มีตัวให้เชื่อมเหลืออยู่ ทำให้ดูเหมือนไม่มีสินค้าเหลือใน Stock ทั้งที่จริงๆแล้วยังเหลืออยู่ 100 

รายการของที่ต้องสั่งเพิ่ม - Order Needed
06:04

Code สำหรับส่ง ID ของ Purchase ข้ามไปยัง RecSF เพื่อใช้อ้างอิง ว่ารายการรับอันนี้มาจาก PurID ไหน
พร้อมกับส่งค่า Produce และ ค่าของต้นทุนข้ามไปด้วยเพื่อประหยัดการพิมพื และเพื่อความถูกต้อง

[Forms]![RecF]![RecSF]![RProd] = Me.PurProd
[Forms]![RecF]![RecSF]![RPurId] = Me.PurID
[Forms]![RecF]![RecSF]![RCost] = Me.PurCost

กฏของการส่งค่า คือ ตัวรับอยู่ซ้าย ตัวส่งอยู่ขวา

Code สำหรับ Update หรือ Save ยอด Receive ที่เพิ่งคีย์ลงไปแต่ยังไม่ได้ทำการกด Tab หรือ Enter ออกจากช่องเพื่อ Update หรือ Save พร้อมกับสั่งให้ตัว BLPurSF ทำการ Requery เพื่อปรับยอดรวมใหม่ที่เพิ่งมีการเบิกเข้าไปด้วย

Me.Dirty = False
[Forms]![RecF]![BLPurSF].Form.Requery

การหาชื่อ Form สามารถคลิ๊กเลือกที่ขอบๆ ของ Form นั้นๆ แล้วคลิ๊กขวาตรงเส้นขอบเรียก Property Sheet ขึ้นมา
ไปที่ Tab Other > ดุชื่อได้ที่ Property - Name

การหา Path ที่ถูกต้องโดยไม่ต้องเขียนเองทำได้โดย เปิด Query ใดๆ ก็ได้ขึ้นมา แล้ว Click ขวาตรงพื้นที่ว่างๆใดๆก็ได้ตรงด้านล่างของ Field ใดๆ แล้วเลือกคำสั่ง Build จากนั้นก็ Double Click เลือก Path ไปเรื่อยๆ เหมือนกับที่เราเลือกไฟล์บน Windows ปกติ. Access ก็จะพิมพ์ Path ที่ถูกต้องออกมาให้เรา copy ไปใส่ใน Code ได้เลย 

หมายเหตุ : เราสามารถใช้วิธีนี้เช็ค Code ที่เราหัดเขึยนเพื่อเช็คความเข้าใจของเราเองได้


ระบบตัดยอดจัดซื้อ
15:55

Code ต่างๆ เหมือนระบบตัดยอดจัดซื้อ เพียงเปลี่ยนแค่ชื่อ Form ชื่อ Field เท่านั้น

ระบบตัดยอดรับ
11:58

Code ต่างๆ เหมือนระบบตัดยอดจัดซื้อ เพียงเปลี่ยนแค่ชื่อ Form ชื่อ Field เท่านั้น

ข้อควรระวัง !!!!!!!  เนื่องจากระบบตัดยอดขาย มีการตัดยอดรับมาเป็นยอด Invoice ก่อน ดังนั้นการตัดยอดขาย จุดที่สำคัญที่สุดคือต้องเลือกตัว Invoice ที่ใช้ตัดให้ถูกต้อง ถ้าคลิ๊กเลือกผิดบรรทัด การตัดจะผิดเพี้ยนไปหมด

ระบบตัดยอดขาย
11:14

ระบบค้นหาใน Lecture นี้เหมือนกับใน Lecture เรื่องระบบค้นหา ทุกประการ

ข้อควรระวัง !!!!!!
ตัวแปรในฟอร์มเดียวกัน ชื่อซ้ำกันไม่ได้ หากมีกล่อง Search หลายกล่องในฟอร์มเดียวกัน ตัวแปรในแต่ละกล่องต้องมีชื่อต่างกัน
เราสามารถใช้ชื่อตัวแปรอย่าง "St" หรือ "Ft" สำหรับกล่อง Search ซ้ำกันได้หากอยู่ต่างฟอร์มกัน แต่ไม่อาจใช้ St หรือ Ft ในกล่อง Search ต่างๆ ที่อยู่ในฟอร์มเดียวกันได้

ระบบค้นหารายการรับ และรายการขาย
07:47

Code สำหรับ Filter เอาข้อมูล Needed Order สำหรับสินค้าที่กำลังคีย์อยู่ขึ้นมาแสดง ก็เหมือนกับ Code สำหรับ Search ที่ผ่านมา ต่างกันแค่ใช้ตัวสินค้าที่กำลังเลือกไปเป็นตัวค้นหา แทนการคีย์หาที่ Search Box

Code ที่ใช้จะต่างกันตรงที่ Filter ตรงตัวไม่ต้อง Like เพราะเราใข้เลือก ไม่ได้พิมพ์

Dim FT As Long
FT = Me.SProd
[Forms]![saleF]![BLNOSF].Form.Filter = "[sprod]=" & FT
[Forms]![saleF]![BLNOSF].Form.FilterOn = True


แสดง Stock ที่หน้าขาย
15:34

ขั้นตอนหลักใน Lecture คือการ Requery ยอด Needed Order ใหม่หลังจากมีการสั่งซื้อเพิ่มแล้ว

Code ที่ใช้ Requery 

Me.Dirty = False
[Forms]![purchasef]![BLNOSF1].Form.Requery

แสดงยอดสั่งซื้อเพิ่มที่หน้าซื้อ
09:35

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

แบบทดสอบข้อควรจำเกี่ยวกับระบบอัตโนมัติต่างๆ
6 questions
+
รายงาน
9 Lectures 50:37

รายงานย่อมต้องการเดือนมาสรุป
Code แปลงวันที่ให้เป็นเดือนคือ

SMonth: Format([sdate],"yyyy/mm")

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

ขั้นตอนการทำ PivotTable

  • เลือกขอบเขตข้อมูลทั้งหมดที่ export มาจาก Access ด้วย Ctrl + A
  • ที่เมนู Insert เลือก PivotTable
  • เลือกวางข้อมูลที่ต้องการสรุปได้ 3 พื้นที่คือ Rows, Columns, Filters และ Values
  • ตัวที่มี Field ยาวเหยียด ควรอยู่ที่ Rows เพราะเราถนัดดูข้อมูลยาวๆที่แนวตั้ง
  • ตัวสั้นกว่า อยู่ที่ Columns
  • เลือกตัวเดียวอยู่ที่ Filters เพราะที่นี่เลือกได้ตัวเดียว
  • ยอดต่างๆที่ต้องการสรุปอยู่ที่ Values

การเปลี่ยนชื่อ Fields ต่างๆที่เป็นชื่อตัวแปร ให้สามารถอ่านออก ทำได้ด้วยการไปที่ Properties ของ Field นั้นๆ ใน Query แล้วพิมพ์ชื่อที่ต้องการให้ปรากฏตรงหัว Column บน Excel ลงใน Property - Caption 

รายงานขาย (Sale Order)
11:25

การติดตามยอดขายก็คือสร้าง Query หารายการขายที่ยังคงมียอดค้างส่ง แล้วเอาวันที่ปัจจุบันไปลบจาก Requirement Date ตัวไหนได้ยอดติดบวก แสดงว่า ตัวนั้นเลยกำหนดแล้วยังไม่มีการส่ง ทำให้เราสามารถติดตามงานได้อย่างใกล้ชิด 

Code คือ

SDelay: Date()-[sreqdate]

แต่ถ้าต้องการรายงานว่ารายการที่ยังค้างส่ง เหลืออีกกี่วันจากวันที่ปัจจุบัน ถึง วันกำหนดส่ง ก็แค่กลับสูตรเป็น

SDelay: [sreqdate]-Date()

ติดตามงานขาย Sale Tracking
04:53

ระบบต่างๆ เหมือนกับตัวรายงานขาย

รายงานซื้อ (Purchase)
04:05

ระบบต่างๆ เหมือนกับตัว ติดตามงานขาย

ติดตามงานซื้อ (Purchase Tracking)
03:18

ระบบต่างๆ เหมือนกับตัวรายงานขาย ต่างกันเพียงมีการดึงข้อมูลจาก PurchaseTbl มาเพิ่ม ด้วยการลาก PurchaseTbl มาเชื่อมบน Query และกำหนด Join ให้เส้น Link ชี้ไปยังตัว PurchaseTbl ที่ถูกลากมากเป็น Support Data

รายงานยอดรับ (Receive)
03:06

ระบบต่างๆ เหมือนกับตัว ติดตามงานขาย แต่ตัวผลลบระหว่างวันที่ปัจจุบันกับวันที่ของเข้า สื่อถึงระยะเวลาที่ของคาอยู่ใน Store ของเรา ซึ่งถ้านานเกิน 6 เดือน เราเรียกว่า slow แต่เกิน 2 ปี เราเรียกว่า Dead Stock ซึ่งต้องมีการบริหารจัดการ เพื่อเอาเนื้อที่และเงินหมุนเวียนคืนกลับมาเพื่อคงสภาพคล่องขององค์กร

Preview 05:18

ระบบต่างๆ เหมือนกับตัวรายงานขาย

รายงานการส่งของ (Invoice)
02:45

ระบบต่างๆ เหมือนกับตัว ติดตามงานขาย

Invoice Tracking
04:19

Code ที่ปุ่มเพื่อเรียกเเปิด Report Query ต่างๆ ต้องมีการใส่ Parameter หรือตัวเลือก "Read only" เพิ่มเข้าไป เนื่องจากไม่ควรมีใครสามารถแก้รายงานต่างๆ ได้

DoCmd.OpenQuery "reportsaleq", , acReadOnly

สร้างเมนูสำหรับรายงาน
11:28

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

แบบทดสอบความเข้าใจว่ารายงานไหนใช้ดูเรื่องอะไร
4 questions
+
แปลงโปรแกรมเป็น Network
2 Lectures 18:46

การ Split ข้อมูลให้ไปที่ Database Tools > Access Database > Split Database

หลัง Split ตารางไป Server แล้ว ตัวข้อมูลจะถูกย้ายไปอยู่ที่ Server ส่วนตัวที่อยู่บนโปรแกรมที่เราเขียนจะกลายเป็นตัว Link ที่ชี้ไปยังไฟล์ใหม่ที่อยู่บน Server ดังนั้นการ Back Up หรือสำรองข้อมูลต้องไป Copy เอาจากไฟล์ '_be' หรือ Back End ที่อยู่บน Server เท่านั้น

แยกตารางไป Server
08:11

การแก้ไขโปรแกรมหลัง Split หากต้องการแก้ไขโครงสร้างตาราง ต้องไปแก้ที่ Server และต้องปิดการใช้งานของทุกคนก่อน
หากต้องการแก้ไขทั่วไปที่ไม่เกี่ยวกับตาราง สามารถแก้ที่จากไฟล์ที่เราเก็บไว้ได้เลย

โดย users ยังคงทำงานต่อเนื่องได้ ไม่ต้องปิด ขั้นตอนคือ

  1. ลบ Link Table ออกก่อนเพื่อป้องกันการทำข้อมูลที่ users กำลังใช้งานจริงอยู่เสียหาย
  2. Import tables ทั้งหมดกลับมาจากไฟล์บน Server ให้กลับมาเป็นโปรแกรม Standalone เหมือนตอนอยู่ระหว่าพัฒนา
  3. หลังแก้ไขปรับปรุงทุกอย่างเรียบร้อยแล้ว ให้ทำการ Split Tables ออกไปไว้ที่ Desktop (อย่าเผลอ split ไปทับตัวที่อยู่บน Server ที่เค้าใช้งานกันอยู่)
  4. Click ขวาที่ Link Table ใดก็ได้ เลือก Linked Table manager เพื่อเปลี่ยน Link ให้ชี้ไป Server แทน
  5. ลบตัวที่อยู่บน Desktop ทิ้ง เนื่องจากเป็นข้อมูลขยะที่เราให้ทดลองตอนแก้ไขโปรแกรม

การสับ Link กรณีที่บางเครื่องเวลานำโปรแกรมเราไปใช้แล้วหาไม่เจอ Tables ที่อยู่บน Server เพราะ เครื่องนั้นๆ อาจมีการ Map ชื่อ Server ไม่เเหมือนเรา อย่างเราอาจเรียก Server เป็น Drive X แต่บางเครื่องอาจเรียกเเป็น Drive L ลักษณะนี้โปรแกรมจะหาตัว Server บนเครื่องนั้นไม่เจอ เราจึงจำเป็นต้องไปที่เครื่องนั้น ไปเปิดโปรแกรมแลัวทำการเปลี่ยน Link เองด้วย Linked Table manager

การกระชับข้อมูล หรือ การ Compact และการสำรองข้อมูล ให้ทำที่ Server เพราะข้อมูลตัวจริงอยู่บน Server

วิธีแก้ไขหลังแยกตารางแล้ว
10:35

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

แบบทดสอบเกี่ยวกับ Client Server หรือ Network Program
5 questions
+
ฺBonus
2 Lectures 12:32

ตัวเลือกการใช้คำสั่ง Filter ของ Access

Text Filters ใช้ Contains
Number Filters ใช้ Less Than กับ Greater Than
Date Filters ใช้ Between

ดาวน์โหลดข้อมูลตัวอย่างได้ที่นี่

Preview 12:27

คูปอง code ส่วนลด 70% สำหรับหลักสูตร เขียนโปรแกรมได้ภายใน 20 ช.ม. ด้วย MS Access
สำหรับผู้ที่ต้องการเรียนรู้วิธีเขียน Access แบบละเอียดผ่านการทำ Stock Workshop

https://www.udemy.com/ms-access-programming/?couponCode=DTF-7017

คูปอง code ส่วนลด 70% สำหรับหลักสูตรเกี่ยวเนื่อง
00:05
About the Instructor
Veerachai Junhunkit
4.6 Average rating
72 Reviews
1,387 Students
3 Courses
Programmer

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