เขียนโปรแกรม Purchase Order ด้วย MS Access
4.9 (5 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
26 students enrolled

เขียนโปรแกรม Purchase Order ด้วย MS Access

เขียนโปรแกรมบริหารงานจัดซื้อได้เองโดยไม่ต้องพึ่งโปรแกรมเมอร์
4.9 (5 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
26 students enrolled
Last updated 12/2017
Thai
Price: $54.99
30-Day Money-Back Guarantee
This course includes
  • 6 hours on-demand video
  • 4 articles
  • 7 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • เขียนโปรแกรมบริหารงานจัดซื้อใช้เองได้
  • สามารถเขียนโปรแกรมเองได้ โดยไม่ต้องพึ่งโปรแกรมเมอร์
  • แก้ไขปรับปรุงโปรแกรมได้ด้วยตัวเองตลอดเวลา
  • ได้เรียนรู้การเขียนโปรแกรมด้วย MS Access ซึ่งสามารถนำไปประยุกต์ใช้ในการเขียนโปรแกรมอื่นๆต่อไปได้
Requirements
  • ต้องมีพื้นฐานการใช้ Excel ตามปกติ
  • ควรมีพื้นฐานความรู้ด้านจัดซื้อระดับหนึ่ง
Description

หลักสูตรนี้เป็นการสอนเขียนโปรแกรม MS Access ในรูปแบบ Workshop โดยจะนำเอางานจัดซื้อ (Purchase) มาเป็นตัวนำการสอน ให้ผู้เรียนได้เห็นการเขียนโปรแกรมที่ใช้งานได้จริง ไม่ใช่เพียงสอนการใช้เครื่องไม้เครื่องมือต่างๆ ที่ผู้เรียนอาจไม่สามารถนำมาประยุกต์ใช้เองได้

งานจัดซื้อ เป็นงานที่ต้องการความละเอียดอ่อนในการวางแผน บริหารจัดการ และติดตาม ซึ่งงานเหล่านี้ต้องการข้อมูลที่ทันต่อเหตุการณ์

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

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

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

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

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

จ้างไม่ได้ หาไม่มี ก็เขียนมันขึ้นมาซะเอง หมดเรื่อง

Who this course is for:
  • ผู้ที่ต้องการเรียนรู้การเขียนโปรแกรมด้วย Microsoft Access
  • ผู้ที่ต้องเกี่ยวข้องกับงานจัดซื้อจัดหา
  • โปรแกรมเมอร์ ที่ต้องใช้ MS Access ทำ Prototype
  • นิสิต นักศึกษา ด้าน IT และ การบริหารจัดการ
  • ประชาชนทั่วไปที่ต้องการติดอาวุธให้ตัวเอง เพื่อ upgrade วิชาชีพ
Course content
Expand all 43 lectures 05:50:22
+ แนะนำหลักสูตร
2 lectures 07:51

ยินดีต้อนรับสู่หลักสูตร 

เขียนโปรแกรม Purchase Order ด้วย MS Access 

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

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

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

จ้างใครเขียนโปรแกรมยังไงก็ไม่ได้อย่างใจ เหมือนเราเขียนเอง

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

อย่ามัวจมกับ Excel ถ้ามันไม่ตอบโจทย์ ลองมองตัวเลือกใหม่ที่เป็นเครื่องมือโดยตรงในการจัดการฐานข้อมูลกันบ้าง

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

Preview 07:41

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

Resource จะประกอบไปด้วย

FilterCode.txt  - Code สำหรับใข้เขียนคำสั่ง Search  FontSetting.xlsx - การตั้งค่า Font ในที่ต่างๆ  Function BahtText.doc - Code สำหรับใช้แปลงตัวเลขเป็นตัวอักษร PreStructure.xlsx - ตัวแบบโครงสร้างข้อมูล ก่อนปรับปรุงให้เป็นโครงสร้างโปรแกรม  Purchase.accdb - โปรแกรมสำเร็จที่ได้จาก Workshop ของหลักสูตร สามารถเข้าไปดู code หรือวิธีการสร้างต่างๆได้ PurchaseStructure.xlsx - โครงสร้างโปรแกรมที่นำไปใช้เขียน Access  QuerySample.accdb - ใช้เป็นตัวอย่างในการสอนเรื่อง Access Filtering ในบทสุดท้าย  Sample.accdb - ตัวอย่างที่ใช้ประกอบการอธิบายต่างๆในหลักสูตร

ดาวน์โหลด Resource ได้จากบทนี้
00:10
+ ออกแบบโปรแกรม
4 lectures 30:12

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

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

จากนั้นก็มองหาข้อมูลว่าส่วนไหนเป็น Header (ตัวแม่) ส่วนไหนเป็น Details (ตัวลูก) โดยดูจากลักษณะ หนึ่ง ต่อ หลาย อย่างเช่น 1 PO มีหลายรายการ 1 Invoice มีหลายรายการ หรือ 1 ใบเสร็จมีหลายรายการ ตัวที่เป็นหนึ่งจะถูกพิจารณาเป็น Header และตัวรายการของมันจะเป็น Details ที่ต้องถูกแยกออกไปเป็น Table ลูก แล้วใส่ Link Field ไว้เพื่ออ้างกลับถึงตัวแม่ได้


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

Preview 11:56

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

หลักเกณฑ์ในการพิจารณา คือ ซ้ำๆ ห้ามคีย์ ตัวอย่างเช่น ชื่อลูกค้า ชื่อสินค้า เป็นต้น 

หมายเหตุ : ไม่ทำ Drop Down สำหรับ ตัวเลข กับ วันที่ เนื่อจากทำไปโอกาสผิดก็ยังมีอยู่เต็มที่เหมือนเดิม

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

ออกแบบระบบ Purchase Request (ขอซื้อ) 2
07:46

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

ออกแบบระบบ Purchase Order (สั่งซื้อ)
10:23

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

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

แบบทดสอบการพิจารณาว่า Fields ไหนควรทำ Drop Down
00:07
+ สร้างฐานข้อมูล
7 lectures 01:02:03

ตั้งค่า 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
06:34

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

Preview 05:16

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

ให้ ID AutoNumber Primary Key กับทุกตาราง
08:18

รูปแบบของ Data Type อื่นๆ ที่ใช่่้บ่อย นอกจาก AutoNumber ได้แก่

Short 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 อย่างที่ตาเราเห็นตอนคีย์ข้อมูลลงไป

ปรับแต่งประเภทข้อมูล 1 - Data Type และ ทำ Dropdowns
10:11
ปรับแต่งประเภทข้อมูล 2 - Data Type และ ทำ Dropdowns
11:30
ปรับแต่งประเภทข้อมูล 3 - Data Type และ ทำ Dropdowns
10:54

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

ประเภทของความสัมพันธ์ แบ่งเป็น 2 ประเภทคือ  

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

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

กำหนดค่าความสัมพันธ์ Relation
09:20

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

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

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

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

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

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

Excel : [a3] =[a1] * [a2]  

ถ้า [a3] เป็น "Amt", [a1] เป็น "Qty" และ [a2] เป็น"price

สูตรใน Access : Amt: [Qty] * [price]

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

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

จากภาพการเชื่อมโยงระหว่าง 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
5 lectures 42:03

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

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

เมื่อใดที่ต้องการสร้างฟอร์มในลักษณะ 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 อื่น เพื่อยืนยันว่าแก้แล้ว เมื่อมาดูอีกทีจะได้ไม่สงสัยว่าแก้ไปหรือยัง
สร้างฟอร์มแบบ Form View
07:02

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

สร้าง Pop Up Form
06:18

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

Preview 08:38

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

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

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

DoCmd.OpenForm "orderF"

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

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

สร้างเมนู
10:20

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

แบบทดสอบการแก้ปัญหาทั่วไปในการสร้างฟอร์ม
3 questions
+ เขียนระบบอัตโนมัติ - Automation
9 lectures 01:26:38

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

sum([r2amt])

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

=[r2sf]![sumr2]

r2sf คือชื่อฟอร์มที่ เราวางตัว Sum ไว้ที่ Footer
sumr2 คือชื่อ Text Box ตัวใหม่ที่เราใส่สูตร Sum ไว้

Code ทีี่ใช้ใน Lecture นี้คือ

Me.R2SF.Form.Requery
Me.RAmt = Me.R2SF![SumR2]


รวมยอด - Sum
14:42

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

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

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

สำหรับ Code ของการ Search ใน Lecture นี้้

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

ระบบค้นหา - Search from Form View
11:53

การ Search จาก Datasheet View ต่างกับการ Search จาก Form View ตรงที่ Datasheet มันเป็น Subform ของ Form อีกที

ตอนเขียน code เลยต้องเติมชื่อ Subform เข้าไปใน path ด้วยดังนี้

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


Search from Datasheet View
05:09

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

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

Me.R2Cost = Me.PStdCost

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

สำหรับ Lecture นี้ code แรกที่ใช้คือ

DoCmd.OpenForm "productf" 

ใช้กับ Event > Double Click เพื่อเปิด Popup Form ขี้นมา

จากนั้นก็ใช้ Code

[Forms]![requestf]![R2SF]![R2Description] = Me.Pid
[Forms]![requestf]![R2SF]![R2Cost] = Me.PStdCost
DoCmd.Close acForm, "productf"

เพื่อส่งค่า Pid จาก ProductF มายัง R2Description ที่อยู่บน RequestF (ที่ต้องส่งเป็น ID มาเพราะตัวรับเป็น DropDown ซึ่งเก็บตัวเลข ID)

นอกจากนั้นเรายังส่งค่า PStdCost มาด้วย เพื่อ copy ราคามาตรฐานมาใส่ใน R2Cost เป็น guide ให้ผู้ขอซื้อด้วย

สิ่งสำคัญใน Code นี้คือการเขียน Path ของข้อมูลที่ต้องเขียนให้ถูกต้อง!


ระบบรับส่งค่า(Set Value) ต่างฟอร์ม
07:31

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

สำหรับกรณีนี้ ทั้ง 2 ตัวอยู่บนฟอร์มเดียวกัน เลยใช้ me ได้ ไม่ต้องเขียน path

Me.R2Cost = Me.PStdCost

Preview 03:53

กลไกลหลัก การทำงานของระบบ Auto Cut Pr นี้ ก็คือ Set Value ที่เราเรียนมาจาก 2 บทที่แล้ว เพียงแต่นำมาประยุกต์ใช้ โดยมีการ copy ข้อมูลจาก Request ไปยัง Order และ copy Order No. จาก Order กลับมายัง Request เท่านั้น

กฏยังเหมือนเดิม คือ ตัวรับอยู่ซ้าย ตัวส่งอยู่ขวา ที่เหลือคือเรื่องของการอ้าง path ให้ถูกต้อง

ระบบตัดรายการที่สั่งซื้อแล้วจาก PR Part1
09:43
ระบบตัดรายการที่สั่งซื้อแล้วจาก PR Part2
11:52

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

OutDoc : Req-00001 = "Req-" & Format([RRef],"00000")

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

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

Code ที่ใช้

If IsNull(Me.RNo) Then
Me.RRef = Nz(DLookup("[maxofrref]", "[requestrefq]"), 0) + 1
Me.RNo = "Req-" & Format([RRef], "00000")
Me.Dirty = False
Else
MsgBox ("มีเลขแล้ว")
Exit Sub
End If

บรรทัด Me.Dirty = False คือการสั่งให้ Access Update ตัว Reference ที่เราแปะเข้าไปด้วย Code 
แปะด้วยส code ก็ต้อง Update ด้วย Code เพราะเราไม่สามารถเข้าไปกดขึ้นบรรทัดใหม่ด้วยมือได้

Auto Ref Part 1 ระบบออกเลขอัตโนมัติ
15:04

การออกเลขอัตโนมัติ หากไม่มีกรอบปีครอบไว้ มันจะ run ไปเรื่อยๆ ไม่มีจบ ตัวเลขจะมากขึ้นๆ ทุกวัน
ดังนั้นเรามักกำหนดให้เลข Run แค่ช่วงปี คือขึ้นปีใหม่ก็เริ่ม 1 ใหม่ แต่มีปีกำหนดเข้าไปใน code ด้วย เพื่อให้รู้ว่าเป็น 1 ของปีไหน และเอา Max ของปีนั้นๆ ที่เราเอามาเป็น criteria ใน Query มาเป็นตัว run ต่อๆไป

code ปรับปรุง

If IsNull(Me.RNo) Then
Me.RRef = Nz(DLookup("[maxofrref]", "[requestrefq]"), 0) + 1
Me.RNo = "Req-" & Year(Me.RDate) & "-" & Format([RRef], "00000")
Me.Dirty = False
Else
MsgBox ("มีเลขแล้ว")
Exit Sub
End If


Auto Ref Part 2 ระบบออกเลขอัตโนมัติ
06:51

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

แบบทดสอบข้อควรจำเกี่ยวกับระบบอัตโนมัติต่างๆ
4 questions
+ รายงาน
9 lectures 01:17:28

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

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

รายงาน PR ค้างซื้อ
12:52
รายงานสรุปซื้อ
09:37
รายงาน PO ค้างรับ
07:16
รายงานรายการขอสั่งซื้อในรายละเอียด
02:00
รายงานสรุปซื้อพร้อมรายละเอียดสินค้า
04:19

สำหรับหลักสูตรนี้ เราจะใช้ Object Report ของ Access เพื่อทำพวกฟอร์มพิมพ์เท่านั้น อย่างเช่น Purchase Request, 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

สร้างแบบฟอร์มออกใบขอซื้อ (PR) 1
12:39
สร้างแบบฟอร์มออกใบขอซื้อ (PR) 2
12:09
สร้างแบบฟอร์มออกใบขอซื้อ (PR) 4
09:40

แบบทดสอบความเข้าใจเกี่ยวกับพื้นที่ต่างๆในการออกแบบแบบฟอร์ม

แบบทดสอบความเข้าใจเกี่ยวกับพื้นที่ต่างๆในการออกแบบแบบฟอร์ม
4 questions
+ แปลงโปรแกรมเป็น Network
2 lectures 16:02

หลังจากเขียนโปรแกรมเสร็จ และทดลองผ่านเรียบร้อยแล้ว เราก็มาถึงจุดที่อาจต้องแปลงโปรแกรมให้เป็นระบบ 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 ไปที่เดียวกัน

Preview 07:03

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

  • หากต้องแก้ตาราง ให้ทำการแก้ตารางที่ 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
วิธีแก้ไขหลังแยกตารางแล้ว
08:59

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

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

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

Text Filters ใช้ Contains 

Number Filters ใช้ Less Than กับ Greater Than 

Date Filters ใช้ Between

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

การขุดค้นข้อมูลด้วย Access Filtering
12:27

Download PDF File สำหรับส่วนลด 20% ได้ที่นี่

Bonus Lecture: 20% Coupon
00:01