เราใช้ Dlookup( ) เพื่อค้นหาข้อมูลที่ต้องการจากทีละเทเบิล เราใช้ค่าที่คืนมาเป็นเงื่อนไขว่าจะเลือกทำอะไร ถ้าไม่เจอ มันจะคืนค่า NULL ครับ และใช้ฟังก์ชั่น Isnull( ) เพื่อทดสอบค่า NULL อีกที
เนื่องจากช่องบาร์โค้ดอยู่ในซับฟอร์ม ดังนั้นการจะอ้างช่องรหัสลูกค้าที่อยู่บนเมนฟอร์มจึงใช้ Parent เพื่ออ้างถึงเมนฟอร์ม แต่ถ้าอยู่ในฟอร์มเดียวกับโค้ดอยู่แล้ว ก็ใช้ Me เพื่ออ้างถึงฟอร์มแทน
เราใส่โค้ดนี้ไว้ใน AfterUpdate event procedure ของช่องบาร์โค้ด แต่เครื่องยิงบาร์โค้ดต้องตั้งเอาไว้ว่าหลังจากยิงแต่ละค่าแล้ว จะต้องส่งโค้ดจำลองการกดคีย์ ENTER หรือ TAB มาด้วยนะครับ ไม่งั้นจะไม่เกิด event นี้
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