กำหนดเงื่อนไขโดยแสกนสินค้าหรือสแกนบัตรสมาชิกในช่องเดียวกัน แบบ 2 เงื่อนไข



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

21 ก.ย. 61 , 23:18:18
อ่าน 572 ครั้ง

nainumgame

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

  • ขอบคุณ ไท.Access

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






ผมคิดไม่ออกครับอาจารย์ครับช่วยผมทีปัญหาของผมคือ
เมือสแกนสินค้าหรือสแกนบัตรสมาชิก ที่ช่องหมายเลข 1 ซึ่งผมต้องการกำหนดให้เป็น 2 เงื่อนไขคือ
เงื่อนไขที่ 1 ถ้าแสกนสินค้า แล้วรหัสตรงกับข้อมูลในตารางProduct ให้หมายเลข2 ไม่มีการเปลี่ยนแปลง แต่จะเพิ่มที่หมายเลข 3 ซึ่งเป็นรหัสสินค้า
เงื่อนไขที่ 2 ถ้าแสกนบัตรสมาชิก ที่ช่องหมายเลข 1 เหมือนกัน แล้วข้อมูลรหัสตรงกับข้อมูลในตาราง customer ให้หมายเลข3 ไม่มีการเปลี่ยนแปลง แต่จะเปลี่ยนแปลงที่หมายเลข 2 ซึ่งเป็นรหัสสมาชิก
ไม่ทราบว่าต้องใส่คำสั่งเงื่อนไขแบบไหนครับ
รบกวนอาจารย์หรือท่านผู้รู้ช่วยทีครับ
« แก้ไขครั้งสุดท้าย: 22 ก.ย. 61 , 07:47:00 โดย nainumgame »

 

22 ก.ย. 61 , 14:04:45
ตอบกลับ #1

สันติสุข

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

เนื่องจากช่องบาร์โค้ดอยู่ในซับฟอร์ม ดังนั้นการจะอ้างช่องรหัสลูกค้าที่อยู่บนเมนฟอร์มจึงใช้ Parent เพื่ออ้างถึงเมนฟอร์ม แต่ถ้าอยู่ในฟอร์มเดียวกับโค้ดอยู่แล้ว ก็ใช้ Me เพื่ออ้างถึงฟอร์มแทน

เราใส่โค้ดนี้ไว้ใน AfterUpdate event procedure ของช่องบาร์โค้ด แต่เครื่องยิงบาร์โค้ดต้องตั้งเอาไว้ว่าหลังจากยิงแต่ละค่าแล้ว จะต้องส่งโค้ดจำลองการกดคีย์ ENTER หรือ TAB มาด้วยนะครับ ไม่งั้นจะไม่เกิด event นี้
โค๊ด: [Select]
If Not Isnull(Dlookup("C_ID","Customer","C_ID = " & Me.[ชื่อเท็กซ์บ็อกซ์ของบาร์โค้ด] )) Then
   Parent.[ชื่อคอมโบบ็อกซ์รหัสลูกค้า] = Me.[ชื่อเท็กซ์บ็อกซ์ของบาร์โค้ด]
   Parent.Dirty = False  ' เพื่อสั่งบันทึกข้อมูล
Elseif Not Isnull(Dlookup("P_ID","Product","P_ID = '" & Me.[ชื่อเท็กซ์บ็อกซ์ของบาร์โค้ด] & "' " )) Then
   Docmd.GoToRecord ,,acNewRec
   Parent.[ชื่อเท็กซ์บ็อกซ์รหัสสินค้า] = Me.[ชื่อเท็กซ์บ็อกซ์ของบาร์โค้ด]
End If
ช่วยพกถุงผ้า/ถุงพลาสติกใช้แล้วไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

22 ก.ย. 61 , 21:53:00
ตอบกลับ #2

nainumgame

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

  • ขอบคุณ ไท.Access

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

ขอบคุณมากครับอาจารย์สันติสุข ทำได้แล้วครับ ตามตัวอย่างครับ

โค๊ด: [Select]
Private Sub Barcode_AfterUpdate()
If Not IsNull(DLookup("C_ID", "Customer", "C_ID = " & Me.[Barcode])) Then
   Parent.[Bill_Customer] = Me.[Barcode]
   Parent.Dirty = False
   Me.Barcode.Value = Null

ElseIf Not IsNull(DLookup("P_ID", "Product", "P_ID = '" & Me.[Barcode] & "' ")) Then
  [Bii_product] = Me.[Barcode]
  Me.Barcode.Value = Null
 
  DoCmd.GoToRecord , , acNewRec

End If

 


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