Online Reference

Home

Microsoft Reference
Knowledge Developer Database Internet Resource Forum
Access
Domain Aggregate Function
ดาวน์โหลดคู่มือ

DLookup Function

Access Function, ใช้ในการดึงค่าของฟิลด์ที่กำหนดจากกลุ่มเรคคอร์ด (domain) ที่ระบุ ฟังก์ชัน DLookup สามารถใช้ในมาโคร, โมดูล, expression คิวรี่ หรือตัว control แบบคำนวณบนฟอร์มหรือรายงาน

ฟังก์ชัน DLookup สามารถใช้ในแสดงค่าของฟิลด์ที่ไม่ได้เป็นแหล่งข้อมูลของฟอร์มหรือรายงาน เช่น ฟอร์มใช้แหล่งข้อมูลจาก Table ชื่อ Order Details โดยฟอร์มแสดงค่าของฟิลด์ OrderID, ProductID, UnitPrice, Quantity และ Discount แต่ฟิลด์ ProductName อยู่ใน Table ชื่อ Products ซึ่งสามารถใช้ฟังก์ชัน Dlookup ในตัว control แบบคำนวณเพื่อแสดงชื่อ ProductName ในฟอร์มเดียวกัน

ไวยากรณ์

DLookup(expr, domain [,criteria] )

อากิวเมนต์ของฟังก์ชัน DLookup มีรายละเอียด คือ

อากิวเมนต์ รายละเอียด
expr บังคับ, เป็น expression ที่ระบุถึงฟิลด์ที่เก็บข้อมูลตัวเล็กที่ต้องการหาค่าผลรวม ซึ่งสามารถเป็น expression ของข้อความที่ระบุฟิลด์ใน Table หรือคิวรี่ หรือเป็น expression หาค่าคำนวณของฟิลด์ ในอากิวเมนต์ expr สามารถใช้ชื่อของฟิลด์ของ Table, ตัว control บนฟอร์ม, ค่าคงที่ หรือฟังก์ชัน ถ้าอากิวเมนต์ expr ได้รวมฟังก์ชันซึ่งเป็นได้ทั้งฟังก์ชันที่มากับโปรแกรม (built-in function) หรือผู้กำหนดเอง แต่ห้ามใช้ฟังก์ชัน Domain aggregate อื่นๆ และ SQL aggregate
domain บังคับ, เป็น expression ของข้อความที่ระบุถึงกลุ่มของเรคคอร์ดที่กำหนดเป็น domain ซึ่งสามารถเป็นชื่อ Table หรือ คิวรี่
criteria ไม่บังคับ, เป็น expression ของข้อความที่ใช้คัดเลือกช่วงของข้อมูลที่จะให้ฟังก์ชัน DLookup หาค่า เช่น criteria เทียบได้กับคำสั่ง WHERE clause ใน expression ของ SQL ถ้าไม่กำหนดอากิวเมนต์ criteria ฟังก์ชัน DLookup จะหาค่าอากิวเมนต์ expr กับ domain ฟิลด์ที่นำไปใช้ในอากิวเมนต์ criteria ต้องเป็นฟิลด์ที่อยู่ใน domain ถ้าเป็นกรณีอื่นๆ ฟังก์ชัน DLookup ส่งค่าเป็นค่าว่าง (Null)

ลักษณะการประยุกต์

ฟังก์ชัน DLookup ส่งค่าฟิลด์เดี่ยวตามสารสนเทศที่ระบุในอากิวเมนต์ criteria ถึงแม้ว่าอากิวเมนต์ criteria จะเป็นอากิวเมนต์ที่ไม่บังคับ ถ้าไม่มีการกำหนดค่า ฟังก์ชัน Dlookup จะส่งค่าแบบสุ่มจาก domain

ถ้าไม่มีเรคคอร์ดที่สอดคล้องกับอากิวเมนต์ criteria หรือ domain ไม่มีเรคคอร์ด ฟังก์ชัน Dlookup จะส่งค่าว่าง ถ้ามีฟิลด์ที่ตรงกับอากิวเมนต์ criteria มากกว่า 1 ฟิลด์ ฟังก์ชัน Dlookup จะส่งออกค่าแรกที่พบ ดังนั้น การกำหนดอากิวเมนต์ criteria ต้องมั่นใจว่าค่าที่ส่งออกโดยฟังก์ชัน Dlookup ต้องเป็นค่าที่ไม่ซ้ำ (unique) อาจจะเป็นค่า primary key เช่น [EmployeeID] ตามตัวอย่าง

Dim varX As Variant
varX = DLookup("[LastName]", "Employees", "[EmployeeID] = 1")

การใช้ฟังก์ชัน DLookup ในมาโคร หรือโมดูล, expression ในคิวรี่หรือตัว control ต้องสร้างอากิวเมนต์ criteria อย่างระมัดระวังเพื่อทำให้มั่นใจว่าการคำนวณถูกต้อง

นอกจากนี้ฟังก์ชัน DLookup สามารถใช้เป็น expression ของฟิลด์คำนวณในคิวรี่ หรือแถว Update To ในคิวรี่แบบ Update

ฟังก์ชัน DAvg สามารถใช้ในโมดูล, มาโคร หรือตัว control แบบคำนวณบนฟอร์ม ถ้าฟิลด์ที่ต้องการดูค่าไม่ได้เป็นแหล่งข้อมูลของฟอร์ม เช่น ฟอร์มใช้แหล่งข้อมูลจาก Table ชื่อ Order Details และมี text box ชื่อ ProductID เพื่อแสดง ProductID สำหรับการดูค่าของ ProductName ที่อยู่ใน Table ชื่อ Products เป็นค่าใน text box สามารถสร้างเป็นอีก text box และตั้งค่าคุณสมบัติ ControlSource ด้วย expression นี้

=DLookup("[ProductName]", "Products", "[ProductID] =" Forms![Order Details]!ProductID)

Tip ถึงแม้ว่าฟังก์ชัน DLookup จะใช้ในดูค่าจาก Table ได้ แต่การสร้างคิวรี่ดึงฟิลด์จาก Table ที่มีฟิลด์ที่ต้องการในการแสดงค่า เพื่อเป็นแหล่งของฟอร์ม หรือรายงานจะมีประสิทธิภาพมากกว่า

หมายเหตุ ฟังก์ชัน DLookup จะไม่นำเรคคอร์ดที่ยังไม่บันทึกการเปลี่ยนแปลงใน domain มาคำนวณ ถ้าต้องการนำมาคำนวณด้วยให้ทำการบันทึกก่อน

ตัวอย่าง

ตัวอย่างการใช้ฟังก์ชัน DLookup ส่งค่าสารสนเทศของชื่อจากฟิลด์ CompanyName ของเรคคอร์ดที่สอดคล้องกับอากิวเมนต์ criteria โดย Domain คือ Table ชื่อ Shippers อากิวเมนต์ criteria คัดเลือกเฉพาะเรคคอร์ดที่มี ShipperID = 1

Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", "[ShipperID] = 1")

ตัวอย่างต่อไปจาก Table ชื่อ Shippers ใช้ตัว control ของฟอร์ม ShippID ในการกำหนด criteria สำหรับฟังก์ชัน DLookup หมายเหตุ การอ้างอิงตัว control ไม่อยู่ในเครื่องหมายคำพูด ทั้งนี้เพื่อทำให้มั่นใจว่าเมื่อมีการเรียกฟังก์ชัน DLookup ทุกครั้ง Microsoft Access จะนำค่าปัจจุบันมาให้

Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", "[ShipperID] = " & Forms!Shippers!ShipperID)

ตัวอย่างต่อไปใช้ตัวแปร IntSearch ในการดึงค่า

Dim intSearch As Integer, varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", "[ShipperID] = " & intSearch)