แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - PNR

หน้า: [1] 2
1
นี่มันข้อสอบไม่ใช่หรือ !
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

2
ขอเพิ่มเติมจาก อ. OddyWriter หน่อยครับ

อ้างถึง
แนวทางการออกแบบ Databased ที่ผมทำมานี้ เหมาะสมแล้วหรือไม่? ถ้าไม่ ผมควรจะออกแบบอย่างไรเพื่อให้ได้ตามโจทย์ที่ผมต้องการ?
เท่าที่เห็นตอนนี้
- ในระบบมีเทเบิลที่มี 2 ฟิลด์เยอะทีเดียว บางตัวจำเป็นหรือไม่ อย่างเช่นเทเบิล tblBlood ถ้าเป็นผม ผมจะกำหนดตัวเลือกลงในส่วนของ Lookup tab ของฟิลด์ tblContractor.BloodID ไปเลยว่ามีอะไรให้เลือกบ้าง เพราะ 1)กรุ๊ปเลือดตายตัวอยู่แล้ว มีไม่กี่กรุ๊ป (A, A+, A-, ...)  2)ระบบของเราไม่มีความจำเป็นต้องเก็บรายละเอียดอะไรของกรุ๊ปเลือดนั้นอีก เช่น กรุ๊ปนั้นมีแอนติเจ้น A,B,D หรือเปล่า การแยกเทเบิลออกไปในกรณีนี้ เป็นภาระแก่ระบบที่ต้องมาลิงค์ไปยังเทเบิล tblBlood อีกต่างหาก 3)ถ้าตั้งค่า BloodID เป็นอะไรที่ไม่สื่อความหมาย เช่น ตัวเลข ดังนั้นเวลาเปิดดูเทเบิล tblContractor ก็จะต้องมานั่งนึกอีกว่ามันคือเลือดกรุ๊ปอะไรกันแน่ ส่วนเทเบิลอื่นเช่น tblPlant คุณคิดว่าโรงงานจะสร้างเพิ่ม/เปลี่ยนแปลงบ่อยขนาดไหน ถ้าไม่ เมื่อไหร่ที่มีก็ค่อยมาเพิ่มใน Lookup tab ก็ได้
- เข้าใจว่าฟิลด์ xxxID ในทุกเทเบิลจะเป็น Primary Key แต่เราใช้ฟิลด์อื่นๆที่เหมาะสมกว่าเป็น Primary Key ก็ดีกว่าเพราะมัน unique คือมีค่าเดียวไม่ซ้ำกันอยู่แล้ว เช่น tblContractor เราเป็นบุคคลทั้งหมด เราก็ใช้เลขประจำตัวประชาชน (เข้าใจว่าคือฟิลด์ NationalID) มาใช้แทน
- ในความสัมพันธ์ระหว่างเทเบิล (Database Tools - Relationships) ดูความเหมาะสมว่าควรกำหนด Referential Integrity, Cascade Update, Cascade Delete ด้วยหรือไม่  (ส่วนมากผมกำหนด Referential Integrity)

อ้างถึง
Subform โดยให้เป็น Unbound SubForm
- ไม่รู้ว่าทำไมกำหนดเป็น Unbound  ถ้าจะเป็น Unbound ซึ่งเราต้องควบคุมการเขียนลงเทเบิลอื่นๆอีกที ก็ย้ายเท็กซ์บ็อกซ์และคอนโทรลต่างๆใน Unbound SubForm มาไว้บน MainForm แล้วตีกรอบเพื่อแสดงเป็นนัยว่าเป็นข้อมูลที่แยกต่างหากจาก Session ไปเลยน่าจะดูเรียบง่ายกว่า หรือจะนำมาใส่ใน Tab control บน MainForm อีกที ก็สื่อเป็นหมวดหมู่ดี

อ้างถึง
ซึ่งผมเขียน Expression ที่ txtWorkID โดยเมื่อ Dropdown เลือก NationalID เมื่อไหร่ ระบบจะไปดึง Last WorkID ของพนง.คนนั้น ๆ มาจากtblWork(Transaction Table) มาโชว์ / เกิด Error ใน Subform
- ต้องเอาโค้ดที่ทำการดึงและแปะลงฟิลด์ที่เกิด #Error นั้นมาดูครับ

อ้างถึง
การทำแบบฟอร์มเพื่อคีย์หลักสูตรที่แต่ละตำแหน่งต้องอบรมให้ครบตามกฎหมาย
- ก็ต้องมีเทเบิลหลักสูตร (tbSubject หรือเปล่า ?) ,เทเบิลตำแหน่ง (อันนี้ผมไม่รู้เทเบิลไหน สมมุติชื่อ tbP หรือเป็นแค่ฟิลด์ในเทเบิล tbWork ? สมมุติชื่อฟิลด์ F) และสร้างเทเบิลหลักสูตรที่ต้องอบรม (สมมุติชื่อ tbC) ที่มีทั้งฟิลด์ Primary Key ของเทเบิลหลักสูตรและ Primary Key ของเทเบิลตำแหน่ง(หรือแค่ฟิลด์ F ถ้าคุณไม่ได้มีเทเบิลตำแหน่งแยกออกมาต่างหาก) มานำมาตั้งเป็น Primary Key ของ tbC ดังนั้นคุณก็สร้างฟอร์มที่มี Mainform เป็น tbP และมี Subform เป็น tbC เพื่อป้อนหลักสูตรที่ต้องอบรมตามกฎหมายได้แล้ว

หมายเหตุ : Database ไม่ต้องใส่ d ต่อท้ายครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

3
ข้อแนะนำมี 2 ข้อ เท่าที่ผมเห็นจากรูป
1. ควรทำ Normalization อย่างต่ำให้ได้ 3NF
2. ควรแยกตาราง "ข้อมูลส่วนบุคคล" ออกจาก tblWork ครับ ตารางใหญ่เกินไป จัดการยาก
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

4
แนะนำว่าก่อนอื่นคุณต้องเขียนเงื่อนไขออกมาให้หมดก่อนครับ เพราะการทำสาแหรกตระกูลน่ะ เป็นเรื่องที่ยุ่งมากเคยรับมา 2 งาน ราคาหลักหมื่นยังไม่คุ้มกับงานที่ทำเลยครับ (บ่นเฉยๆ)

เงื่อนไขที่ว่าเช่น

1. ข้อมูลย้อนหลังสายตระกูลไปถึงไหน
2. ความสัมพันธ์ (ต้องไม่มีสระอุ) เป็นแบบ 1:1 หรือ 1:M (สามีมีภรรยาได้หลายคนหรือไม่)
3. ข้อมูลจะมี 2 ส่วนที่เกี่ยวข้องกันคือ สายตระกูล และข้อมูลส่วนบุคคล ดังนั้นให้แยกเรื่องสายตระกูลเป็นหลักก่อน ส่วนที่อยู่น่ะค่อยใส่เข้าไปภายหลังได้
4. เห็นว่ามีใส่เรื่อง "เลขที่บัตร ปชช." แน่ใจหรือเปล่าครับ ว่าจะใส่ข้อมูลส่วนนี้ เพราะปัญหาตรงนี้เยอะมากนะขอบอก ดังนั้นกำหนด ID บุคคลแทนจะดีกว่า
5. เรื่องความย้อนแย้งที่คุณว่าน่ะ จะสร้างปัญหาเมื่อสายตระกูลใหญ่มากๆ ได้ เพราะอาจเกิดกรณี หลานชั้น 3 ของตระกูล มาแต่งงานกับเหลนชั้น 4 ของตระกูลแต่คนละสายได้ ดังนั้นถ้าวางระบบเป็น Layer โดยไม่ต้องสนใจเงื่อนไขพวกนี้จะดีกว่า เพราะเรื่องนี้เป็นการบันทึกความจริง ซึ่งความจริงก็จะมีเงื่อนไขแบบนี้อยู่ในตัวอยู่แล้ว
6. มองหาแกนหลักของตระกูล เช่น จากต้นตระกูล > รุ่นที่ 2 ที่เป็นลูกของต้นตระกูล พวกสามี/ภรรยา ก็ใช้เป็นข้อมูลรองของรุ่น 2 (เหมือนกับการเพิ่มข้อมูลเบอร์โทรอะไรงี้)
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

5
สรุปรายงานวันนี้ก่อนนะครับ
1. คุณ Pookpuy สั่งหนังสือ ความทรงจำสีแดง ราคา 100 บาท (+ค่าส่ง 30 บาท) ส่งหนังสือให้แล้ว
2. คุณ PNR บริจาค 1,070 โอนแล้ว
3. คุณ Apirak สั่งหนังสือ Access 2010 Missing Manual ราคา 600 (+ค่าส่งลงทะเบียน 65 บาท) รับโอนเรียบร้อย ส่งแล้ว
4. คุณ Jee007 บริจาค 500 โอนแล้ว
5. คุณ Chai บริจาค 500 โอนแล้ว
6. คุณ Prajak บริจาค 200 โอนแล้ว
7. คุณ Looktarn สั่ง Excel เร็วเว่อร์ 299 (+ค่าส่ง 30) โอนแล้ว

ยอดรวม 3,269 บาท

เดี๋ยวจะโอนให้ Web Master ต่อไป โดยจากที่คุยกับเว็บมาสเตอร์คือ เมื่อจ่ายค่า Host+Domain จะแจ้งที่หน้าเว็บครับ

ขอบคุณทุกท่านที่ให้ความช่วยเหลือเว็บนี้ครับ

ปล. แก้ไขยอดโอนคุณ PNR และคุณ Looktarn

ได้รับเงินสนับสนุนจำนวน 3,269 บาทเป็นที่เรียบร้อย ขอขอบคุณทุกท่านมากๆเลยนะครับ :love:
กระผมจะดูแลรักษาเว็บนี้ให้ดีที่สุดเลยครับ :yuush:

  ค่าเช่าโฮส 642.- 
  ค่าโดเมน 400.- 
  คงเหลือ 
  62-63    ชำระเรียบร้อย    ชำระเรียบร้อย    2,227 
  63-64    เตรียมพร้อม    300.-   1,927 
  64-65    เตรียมพร้อม    เตรียมพร้อม
  65-66    ...    เตรียมพร้อม

ปล.ขอปิดการโพสกระทู้ใว้เพียงเท่านี้นะครับผม :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

6
สรุปรายงานวันนี้ก่อนนะครับ
1. คุณ Pookpuy สั่งหนังสือ ความทรงจำสีแดง ราคา 100 บาท (+ค่าส่ง 30 บาท) ส่งหนังสือให้แล้ว
2. คุณ PNR บริจาค 1,070 โอนแล้ว
3. คุณ Apirak สั่งหนังสือ Access 2010 Missing Manual ราคา 600 (+ค่าส่งลงทะเบียน 65 บาท) รับโอนเรียบร้อย ส่งแล้ว
4. คุณ Jee007 บริจาค 500 โอนแล้ว
5. คุณ Chai บริจาค 500 โอนแล้ว
6. คุณ Prajak บริจาค 200 โอนแล้ว
7. คุณ Looktarn สั่ง Excel เร็วเว่อร์ 299 (+ค่าส่ง 30) โอนแล้ว

ยอดรวม 3,269 บาท

เดี๋ยวจะโอนให้ Web Master ต่อไป โดยจากที่คุยกับเว็บมาสเตอร์คือ เมื่อจ่ายค่า Host+Domain จะแจ้งที่หน้าเว็บครับ

ขอบคุณทุกท่านที่ให้ความช่วยเหลือเว็บนี้ครับ

ปล. แก้ไขยอดโอนคุณ PNR และคุณ Looktarn
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

7
สนใจ
ใช้งาน Excel 2016 ให้เร็วเว่อร์ 299 บาท 1 เล่มคะ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

8
ขอแทรกหน่อยครับ ดูแล้วเหมือนว่า TerminatedDate จะขึ้นกับ Contractor เพียงอย่างเดียว ไม่ได้ขึ้นกับ WorkID เลย ดังนั้น TerminatedDate ควรไปอยู่ในเทเบิลของ Contractor มากกว่าหรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

9
ช่วยบริจาค 500 ครับ ส่งเลขบัญชีมาได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

10
ขอมีส่วนร่วมด้วยครับ...ผมขอซื้อ Access 2010 The Missing Manual 1 เล่มครับ...ขอบคุณครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

11
ขอจอง 2. ความทรงจำสีแดง 100 บาท ครับผม :love:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

12
ยังไม่หมดครับ





Super Easy Excel 220 บาท
ใช้งาน Excel 2016 ให้เร็วเว่อร์ 299 บาท
จัดการฐานข้อมูลด้วย Excel 450 บาท
Access 2010 The Missing Manual 600 บาท

โพสต์นี้ได้รับคำขอบคุณจาก: PNR

13
เปิดมุมมองออกแบบแล้วกำหนด Format ให้ฟิลด์นี้ที่ Property Sheet ทางขวา
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

14
โดยปกตินั้นเราจะใช้ Query ในการเชื่อมหรือผูกชุดข้อมูลถึงกันเช่น เราเชื่อมรหัสลูกค้าจากใบสั่งซื้อ --> รหัสลูกค้าจากบัญชีรายชื่อ ก็จะได้ข้อมูลเป็นเลขที่ใบสั่งซื้อ,ชื่อ-ที่อยู่ผู้ซื้อ,ราคา,ฯลฯ เป็นต้น(ข้อมูลต่อกันในแนวนอน)

กลับไปที่หัวข้อการใช้ UNION Query นั้นจะเป็นการนำข้อมูลมารวมต่อกันในแนวตั้งลงมาตัวอย่างเช่น เราอยากรู้ว่าทัั้งรายชื่อผู้ขาย(เซล),รายชื่อผู้ซื้อ(ลูกค้า),รายชื่อติดต่ออื่นๆนั้นมีใครบ้างนั้นเราก็ใช้ UNION Query จับมารวมกัน หรือถ้าอย่างผมมีตารางเก็บใบสั่งซื้อแยกปีแต่อยากรู้ว่าตั้งแต่ปี 59,60,61,62 ถ้ารวมกันแล้วมีค่าเท่าไหร่ หรือมากรองว่าลูกค้าคนนี้ทั้งหมดแล้วซื้ออะไรไปบ้างทั้งที่ข้อมูลอยู่คนล่ะตารางกันเป็นต้นครับ

อธิบายมาซะยาวมาถึงวิธีการนำไปใช้งานนั้นสามารถชมคลิปตัวอย่างจากทาง microsoft ได้เลยครับผม -->Watch an example of building a union query link


ที่มา Use a union query to combine multiple queries into a single result link
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

15
ใครเคยใช้ไหม เป็นยังไงบ้าง https://ultraviewer.net/en/ link
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

16
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

หน้า: [1] 2