รบกวนสอบถามการสร้างตารางความสัมพันธ์ Relationship หน่อยครับ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

27 ก.พ. 61 , 20:35:18
อ่าน 668 ครั้ง

Eik Q Sang

รบกวนสอบถามการสร้างตารางความสัมพันธ์ Relationship หน่อยครับ
คือผมมีตู้เก็บเอกสาร โดยตู้ที่เก็บมีอยู่ 5 ชั้น โดยแต่ละชั้นเก็บแฟ้มลูกค้าได้ชั้นละ 90 ผมได้สร้างตารางตู้เก็บเอกสารดังนี้ครับ

Table ที่ 1 มีชื่อว่า tblCabinet มีฟิลด์ดังนี้คับ
Cabinet      Code      Status
1/1/1              001          10
1/1/2              002          10
1/1/3              001          10
1/1/4              003          10

หมายเหตุ - ผมขออธิบายความหมายของเลขตู้ตามนี้นะครับ 1/2/4 หมายถึง ตู้ที่ 1 ชั้นที่ 2 ลำดับที่ 4 ส่วน Status - 10 คือ เอกสารยังอยู่ 20 คือเอกสารนั้นปิดบัญชีไป

ส่วนแฟ้มลูกค้าผมได้สร้างตารางดังนี้ครับ

Table ที่ 2 มีชื่อว่า tblCusMast มีฟิลด์ดังนี้ครับ
Type               Code             Name          Status
รายย่อย             001               สมชาย            10
รายย่อย             002               สมหมาย          10
รายย่อย             003               สมหวัง            20

ทั้งนี้ผมอยากให้นึกถึงห้องสมุดนะคับที่มีการเรียงสมุดตามหมวดหมู่ไว้น่ะครับ

เงื่อนไข - ใน 1 Code สามารถมีได้หลาย Cabinet


และเวลาที่ลูกค้ารายนั้นปิดบัญชี (Status 20) ตู้ก้อจะว่าง แล้วพอมีลูกค้ารายใหม่ (Status 10) ก้อให้ใส่ลูกค้ารายใหม่ เข้าไปแทนในตู้ที่ว่างอยู่น่ะคับ


ผมอยากสร้างว่าเราจะสร้างตารางความสัมพันธ์ Relationship ยังไงบ้าง และมีแนวคิดในการทำฟอร์ม อย่างไรบ้างครับ ขอบคุณมากครับผม

 

01 มี.ค. 61 , 16:32:21
ตอบกลับ #1

OddyWriter

ดูเหมือนต้องมี 3 ตารางนะครับ
ตาราง 1 เก็บข้อมูลตู้ (CabinetCode, CabinetLocation)
ตาราง 2 เก็บข้อมูลลูกค้า (CustomerID, CustomerDetails)
ตาราง 3 เก็บข้อมูลการใช้ตู้ (CustomerID,CabinetCode)

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

01 มี.ค. 61 , 20:27:30
ตอบกลับ #2

Eik Q Sang

ดูเหมือนต้องมี 3 ตารางนะครับ
ตาราง 1 เก็บข้อมูลตู้ (CabinetCode, CabinetLocation)
ตาราง 2 เก็บข้อมูลลูกค้า (CustomerID, CustomerDetails)
ตาราง 3 เก็บข้อมูลการใช้ตู้ (CustomerID,CabinetCode)

เวลาตู้ไหนไม่ได้ใช้ ก็ลบข้อมูลในตาราง 3
ถ้าจะเช็คว่าตู้ไหนว่างก็ใช้ Query ดึงข้อมูล ตาราง 1 + ตาราง 3 โดยให้แสดงทุกเรคอร์ดในตาราง 1
ถ้ามีลูกค้าใหม่มากำหนดให้คิวรีแสดงเฉพาะตู้ว่างมาให้เลือกได้

ขอบคุณมากนะครับผม :love:

 

01 มี.ค. 61 , 21:57:35
ตอบกลับ #3

Eik Q Sang

ดูเหมือนต้องมี 3 ตารางนะครับ
ตาราง 1 เก็บข้อมูลตู้ (CabinetCode, CabinetLocation)
ตาราง 2 เก็บข้อมูลลูกค้า (CustomerID, CustomerDetails)
ตาราง 3 เก็บข้อมูลการใช้ตู้ (CustomerID,CabinetCode)

เวลาตู้ไหนไม่ได้ใช้ ก็ลบข้อมูลในตาราง 3
ถ้าจะเช็คว่าตู้ไหนว่างก็ใช้ Query ดึงข้อมูล ตาราง 1 + ตาราง 3 โดยให้แสดงทุกเรคอร์ดในตาราง 1
ถ้ามีลูกค้าใหม่มากำหนดให้คิวรีแสดงเฉพาะตู้ว่างมาให้เลือกได้

ผมได้สร้างตารางความสัมพันธ์ดังรูปด้านล่างครับ


พอมีลูกค้ารายใหม่ผมจะไปกรอกชื่อใน
- ตาราง 2 เก็บข้อมูลลูกค้า (CustomerID, CustomerDetails)
ตามที่คุณ OddyWriter บอกว่า ถ้าจะเช็คว่าตู้ไหนว่างก็ใช้ Query ดึงข้อมูล ตาราง 1 + ตาราง 3 โดยให้แสดงทุกเรคอร์ดในตาราง 1
ถ้ามีลูกค้าใหม่มากำหนดให้คิวรีแสดงเฉพาะตู้ว่างมาให้เลือกได้ ตรงนี้ผมทำแล้วดังรูปด้านล่าง



แต่ก็ยังงงๆอยู่อะคับ แล้วถ้าเราทราบว่าตู้ไหนว่าง

พอรู้ตู้ว่างเราถึงจะไปกรอกใส่ในตาราง 3 เก็บข้อมูลการใช้ตู้ (CustomerID,CabinetCode) อีกทีใช่ไหมครับ

รบกวนหน่อยนะครับผม ยังงงอยู่เลยคับ  :dizzy: ขอบคุณมากครับผม
« แก้ไขครั้งสุดท้าย: 01 มี.ค. 61 , 22:09:01 โดย shykeng »

 

01 มี.ค. 61 , 22:42:28
ตอบกลับ #4

pizza_p

- ตาราง tblCabinet ให้เพิ่มฟิลด์ status ที่บอกว่าตู้ว่างหรือไม่ว่าง
- ตาราง tblCabinetUse อาจจะเพิ่มฟิลด์ วันที่ใช้ตู้ วันที่เลิกใช้ตู้
- เวลาใช้งานให้เขียนโปรแกรม เพิ่ม record เข้าไปใน tblCabinetUse ว่ามีลูกค้าเข้าใช้ตู้ไหนเมื่อไหร่ แล้วให้ Update ฟิลด์ status ในตาราง tblCabinet ว่าตู้นี้ไม่ว่าง
- เวลาลูกค้าเลิกใช้ตู้ ก็ Update วันเวลาที่ลูกค้าเลิกใช้ ในตาราง tblCabinetUse และ Update ฟิลด์ status ในตาราง tblCabinet ว่าตู้นี้ว่างแล้ว

เวลาจะดูสถานะว่าตู้ไหนว่างไม่ว่างก็แค่ดูใน ตาราง tblCabinet ในช่อง status ก็พอ

 

01 มี.ค. 61 , 23:05:14
ตอบกลับ #5

Eik Q Sang

- ตาราง tblCabinet ให้เพิ่มฟิลด์ status ที่บอกว่าตู้ว่างหรือไม่ว่าง
- ตาราง tblCabinetUse อาจจะเพิ่มฟิลด์ วันที่ใช้ตู้ วันที่เลิกใช้ตู้
- เวลาใช้งานให้เขียนโปรแกรม เพิ่ม record เข้าไปใน tblCabinetUse ว่ามีลูกค้าเข้าใช้ตู้ไหนเมื่อไหร่ แล้วให้ Update ฟิลด์ status ในตาราง tblCabinet ว่าตู้นี้ไม่ว่าง
- เวลาลูกค้าเลิกใช้ตู้ ก็ Update วันเวลาที่ลูกค้าเลิกใช้ ในตาราง tblCabinetUse และ Update ฟิลด์ status ในตาราง tblCabinet ว่าตู้นี้ว่างแล้ว

เวลาจะดูสถานะว่าตู้ไหนว่างไม่ว่างก็แค่ดูใน ตาราง tblCabinet ในช่อง status ก็พอ

เข้าใจแล้วครับผม ขอบคุณมากครับอาจารย์ pizza_p

 

02 มี.ค. 61 , 20:59:08
ตอบกลับ #6

Eik Q Sang

สอบถามเพิ่มเติมหน่อยครับ แล้วจะเขียนฟอร์มออกมาเป็นยังไงอ่ะครับ และต้องเขียนโค้ดไรเพิ่มเติมไหมครับ ยังนึกภาพไม่ออกครับผม ขอบคุณครับ
« แก้ไขครั้งสุดท้าย: 02 มี.ค. 61 , 21:02:39 โดย shykeng »

 

03 มี.ค. 61 , 12:55:21
ตอบกลับ #7

OddyWriter

ไฟล์ตัวอย่างครับ ค่อยๆ ดู เริ่มจาก ตาราง คิวรี ฟอร์ม มาโคร ดูละเอียดๆ ครับ ไม่ได้ซ่อนคำสั่งอะไรเป็นพิเศษ ไม่มี VBA ใช้มาโครเท่านั้น

https://www.dropbox.com/s/xq2klbx7ci1djid/Cabinet.accdb?dl=0 link
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

03 มี.ค. 61 , 19:56:24
ตอบกลับ #8

Eik Q Sang

ไฟล์ตัวอย่างครับ ค่อยๆ ดู เริ่มจาก ตาราง คิวรี ฟอร์ม มาโคร ดูละเอียดๆ ครับ ไม่ได้ซ่อนคำสั่งอะไรเป็นพิเศษ ไม่มี VBA ใช้มาโครเท่านั้น

https://www.dropbox.com/s/xq2klbx7ci1djid/Cabinet.accdb?dl=0 link

ขอบพระคุณมากครับ อาจารย์ OddyWriter

 


บอร์ดเรียนรู้ Access สำหรับคนไทย