สมัครสมาชิก
 

รบกวนแนะนำการออกแบบตารางเพื่อทำโปรแกรม POS แบบลูกค้าแต่ละรายได้ราคาแตกต่างกัน



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

10 ก.ย. 62 , 14:09:42
อ่าน 153 ครั้ง

Tongo

  • สมาชิกไท.Access
  • กระทู้: 5

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ผมกำลังทำโปรแกรม POS ให้กับโรงงานเล็กๆอยู่ครับ ซึ่งลูกค้าแต่รายจะได้ราคาสินค้าแตกต่างกันในสินค้าเดียวกัน เช่น สินค้า A ลูกค้าบางรายได้ราคา 100 บางราย 95 บางราย 90 บางราย 85 ผมมีรายการสินค้าอยู่ทั้งหมด 9 ชนิด จะต้องออกแบบตารางอย่างไรดีครับ

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

 

10 ก.ย. 62 , 14:33:13
ตอบกลับ #1

PNR

อ้างถึง
ลูกค้าแต่รายจะได้ราคาสินค้าแตกต่างกันในสินค้าเดียวกัน

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

ถ้าลูกค้า 1 คน ได้รับส่วนลด ของสินค้าทุกชิ้นเหมือนกันหมด
 เก็บ ไอดีลูกค้า / ไอดีสินค้า / ส่วนลด 

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


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








:meaw: :grin: :shout:
 

10 ก.ย. 62 , 15:15:09
ตอบกลับ #2

Tongo

  • สมาชิกไท.Access
  • กระทู้: 5

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

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

 

10 ก.ย. 62 , 15:25:08
ตอบกลับ #3

PNR

ถ้า ไอดีสินค้า เป็นค่าว่าง เงื่อนไขจาก  ตารางขาย.ไอดีลูกค้า =  ตารางส่วนลด.ไอดีลูกค้า
ให้ Dlookup("UnitPrice","ตารางสินค้า")
else
   Dlookup("ราคาลด","ตารางส่่วนลด")
ประมาณนี้ครับ


คือถ้าเช็คเงื่อนไขแล้ว ไอดีสินค้าตัวนี้ไม่มี แสดงว่าไม่ได้กำหนดราคาส่วนลด ของไอดีลูกค้าคนนั้นไว้
ก็ให้ไปดึงค่าจากตารางสินค้ามาแทน
:meaw: :grin: :shout:
 

11 ก.ย. 62 , 07:20:28
ตอบกลับ #4

Tongo

  • สมาชิกไท.Access
  • กระทู้: 5

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ใช่แบบนี้ไหมครับ
อ้างถึง
iif([prod_id]<>0,[order].[cus_id]=[deal].[cus_id],dlookup([deal_price],[deal]))
Else
    dlookup([deal_price],[deal])

pord_id คือ ไอดีสินค้า
cus_id คือ ไอดีลูกค้า
deal คือ ตารางส่วนลด
deal_price คือ ราคาในตารางส่วนลด
order คือ ตารางขาย เก็บ เลขที่การขาย วันที่ ไอดีลูกค้า มีอีกตารางนึงที่เกี่ยวข้องคือ order detail เก็บ เลขที่การขาย ไอดีสินค้า และจำนวนการขาย
« แก้ไขครั้งสุดท้าย: 11 ก.ย. 62 , 07:25:44 โดย Tongo »

 

11 ก.ย. 62 , 10:32:50
ตอบกลับ #5

PNR

มันประมาณนี้ครับ
โค๊ด: [Select]
Dim ProD As String
Dim CusID As String
If Not IsNull(Me.Prod_ID) Then
ProD = Me.Prod_ID
CusID = Forms!frmpos.Form.cus_id
If IsNull(DLookup("deal_price", "tblDeal", "[cus_id]= " & CusID & " And [pord_id]= " & [ProD] & "")) Then
Me.Price = DLookup("pord_price", "tblProduct", "product_id= " & ProD)
Else
Me.Price = DLookup("deal_price", "tblDeal", "[cus_id]= " & CusID & " And [pord_id]= " & [ProD] & "")
End If
End If
ตัวอย่าง คร่าวๆ ครับเผื่อเห็นแนวทาง
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Tongo

12 ก.ย. 62 , 05:13:58
ตอบกลับ #6

Tongo

  • สมาชิกไท.Access
  • กระทู้: 5

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ผมได้ทดลองทำดูแล้วมันขึ้น runtime error ครับ ผมไม่รู้ว่ามันเกี่ยวกับค่าที่ผมใส่ไปยังไง

 พอกด debug มันก็ชี้มาที่บรรทัดนี้


แบบนี้แก้ไขอย่างไรครับ
« แก้ไขครั้งสุดท้าย: 12 ก.ย. 62 , 05:16:59 โดย Tongo »

 

12 ก.ย. 62 , 08:17:17
ตอบกลับ #7

PNR

Error นี้เกิดจาก datatype ของคุณกำหนดเป็น Text ครับ แต่โค้ดที่ผมให้ไปนั้นเป็น Number

เพิ่ม เครื่องหมาย ' อีกนิด Error นี้จะหายไปครับเช่น CusID ของคุณ คือ C01 เป็นสตริง ไม่ใช่ตัวเลข
แก้เป็นแบบนี้
If IsNull(DLookup("deal_price", "tblDeal", "[cus_id]= '" & CusID & "' And [pord_id]= " & [ProD] & "")) Then

Me.Price = DLookup("pord_price", "tblProduct", "product_id= " & ProD)
Else
Me.Price = DLookup("deal_price", "tblDeal", "[cus_id]= '" & CusID & "' And [pord_id]= " & [ProD] & "")
End If


« แก้ไขครั้งสุดท้าย: 12 ก.ย. 62 , 08:25:17 โดย PNR »
:meaw: :grin: :shout:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Tongo

12 ก.ย. 62 , 14:22:57
ตอบกลับ #8

Tongo

  • สมาชิกไท.Access
  • กระทู้: 5

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ขอบคุณมากครับ โมดูลนี้สำเร็จแล้วครับ _/|\_ งมอยู่กับเรื่องนี้ร่วมเดือน

 


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