ในฐานข้อมูลบนเดสก์ท็อป Access คุณสามารถใช้ฟังก์ชัน DLookup เพื่อรับค่าของเขตข้อมูลเฉพาะจากชุดระเบียนที่ระบุ ( โดเมน ) ใช้ฟังก์ชัน DLookup ในโมดูล Visual Basic for Applications (VBA) แมโคร นิพจน์คิวรี หรือ ตัวควบคุมที่มีการคำนวณ บนฟอร์มหรือรายงาน
คุณสามารถใช้ฟังก์ชัน DLookup เพื่อแสดงค่าของเขตข้อมูลที่ไม่ได้อยู่ในแหล่งระเบียนสําหรับฟอร์มหรือรายงานของคุณ ตัวอย่างเช่น สมมติว่าคุณมีฟอร์มที่ยึดตามตารางรายละเอียดใบสั่งซื้อ ฟอร์มจะแสดงเขตข้อมูล OrderID, ProductID, UnitPrice, Quantity และ Discount อย่างไรก็ตาม เขตข้อมูล ProductName อยู่ในอีกตารางหนึ่งซึ่งเป็นตาราง Products คุณสามารถใช้ฟังก์ชัน DLookup ในตัวควบคุมจากการคํานวณเพื่อแสดง ProductName บนฟอร์มเดียวกันได้
ไวยากรณ์
DLookup( expr, โดเมน [, criteria] )
ไวยากรณ์ของฟังก์ชัน DLookup มีอาร์กิวเมนต์ดังนี้
อาร์กิวเมนต์ |
คำอธิบาย |
---|---|
expr |
จำเป็น นิพจน์ที่ระบุเขตข้อมูลที่มีค่าที่คุณต้องการส่งกลับ ซึ่งอาจเป็น นิพจน์สตริง ที่ระบุเขตข้อมูลในตารางหรือคิวรี หรืออาจเป็นนิพจน์ที่ทําการคํานวณข้อมูลในเขตข้อมูลนั้น ใน expr คุณสามารถใส่ชื่อของเขตข้อมูลในตาราง ตัวควบคุมบนฟอร์ม ค่าคงที่ หรือฟังก์ชัน ถ้า expr มีฟังก์ชันอาจเป็นฟังก์ชันที่มีอยู่แล้วภายในหรือที่ผู้ใช้กําหนดเอง แต่ไม่ใช่ฟังก์ชันการรวมโดเมนอื่นหรือฟังก์ชันการรวม SQL |
โดเมน |
จำเป็น นิพจน์สตริงที่ระบุชุดของระเบียนที่ประกอบด้วยโดเมน ซึ่งอาจเป็นชื่อตารางหรือชื่อแบบสอบถามสําหรับแบบสอบถามที่ไม่จําเป็นต้องใช้พารามิเตอร์ |
เกณฑ์ |
ไม่จำเป็น นิพจน์สตริงที่ใช้เพื่อจํากัดช่วงข้อมูลที่ฟังก์ชัน DLookup ถูกดําเนินการ ตัวอย่างเช่น เกณฑ์ มักจะเทียบเท่ากับส่วนคําสั่ง WHERE ในนิพจน์ SQL โดยไม่มีคําว่า WHERE ถ้าละ เกณฑ์ ไว้ ฟังก์ชัน DLookup จะประเมิน expr เทียบกับทั้งโดเมน เขตข้อมูลใดๆ ที่รวมอยู่ใน เกณฑ์ ต้องเป็นเขตข้อมูลใน โดเมนด้วย มิฉะนั้น ฟังก์ชัน DLookup จะ ส่งกลับ Null |
ข้อสังเกต
ฟังก์ชัน DLookup จะส่งกลับค่าเขตข้อมูลเดียวโดยยึดตามข้อมูลที่ระบุในเกณฑ์ แม้ว่า เกณฑ์ จะเป็นอาร์กิวเมนต์ทางเลือก แต่ถ้าคุณไม่ได้ใส่ค่าสําหรับ เกณฑ์ ฟังก์ชัน DLookup จะส่งกลับค่าสุ่มในโดเมน
ถ้าไม่มีระเบียนใดตรงกับเกณฑ์ หรือถ้าโดเมนไม่มีระเบียนฟังก์ชัน DLookup จะส่งกลับ Null
ถ้ามีเขตข้อมูลตรงกับ เกณฑ์มากกว่าหนึ่งเขตข้อมูล ฟังก์ชัน DLookup จะส่งกลับการเกิดขึ้นครั้งแรก คุณควรระบุเกณฑ์ที่จะตรวจสอบให้แน่ใจว่าค่าเขตข้อมูลที่ส่งกลับโดยฟังก์ชัน DLookup ไม่ซ้ํากัน คุณอาจต้องการใช้ค่า คีย์หลัก สําหรับเกณฑ์ของคุณ เช่น [EmployeeID] ในตัวอย่างต่อไปนี้ เพื่อให้แน่ใจว่าฟังก์ชัน DLookup จะส่งกลับค่าที่ไม่ซ้ํากัน:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
ไม่ว่าคุณจะใช้ฟังก์ชัน DLookup ในแมโครหรือมอดูล นิพจน์คิวรี หรือตัวควบคุมจากการคํานวณ คุณต้องสร้างอาร์กิวเมนต์ criteria อย่างรอบคอบเพื่อให้แน่ใจว่าจะได้รับการประเมินอย่างถูกต้อง
คุณสามารถใช้ฟังก์ชัน DLookup เพื่อระบุเกณฑ์ในแถว เกณฑ์ ของคิวรี ภายในนิพจน์เขตข้อมูลจากการคํานวณในคิวรี หรือในแถว อัปเดตเป็น ใน อัปเดตคิวรี
คุณยังสามารถใช้ฟังก์ชัน DLookup ในนิพจน์ในตัวควบคุมจากการคํานวณบนฟอร์มหรือรายงานได้ ถ้าเขตข้อมูลที่คุณต้องการแสดงไม่ได้อยู่ในแหล่งระเบียนที่ฟอร์มหรือรายงานของคุณยึดตาม ตัวอย่างเช่น สมมติว่าคุณมีฟอร์มรายละเอียดการสั่งซื้อที่ยึดตามตารางรายละเอียดใบสั่งซื้อที่มีกล่องข้อความที่เรียกว่ารหัสผลิตภัณฑ์ที่แสดงเขตข้อมูลรหัสผลิตภัณฑ์ เมื่อต้องการค้นหา ProductName จากตาราง Products โดยยึดตามค่าในกล่องข้อความ คุณสามารถสร้างกล่องข้อความอื่นและตั้งค่าคุณสมบัติ ControlSource เป็นนิพจน์ต่อไปนี้:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
เคล็ดลับ
-
แม้ว่าคุณจะสามารถใช้ฟังก์ชัน DLookup เพื่อแสดงค่าจากเขตข้อมูลใน ตาราง Foreign Key แต่การสร้างคิวรีที่มีเขตข้อมูลที่คุณต้องการจากทั้งสองตารางอาจมีประสิทธิภาพมากกว่า เพื่อยึดตามฟอร์มหรือรายงานของคุณบนคิวรีนั้น
-
คุณยังสามารถใช้ตัวช่วยสร้างการค้นหาเพื่อค้นหาค่าในตารางภายนอกได้
หมายเหตุ: การเปลี่ยนแปลงที่ไม่ได้บันทึกไปยังระเบียนใน โดเมน จะไม่ถูกรวมไว้เมื่อคุณใช้ฟังก์ชันนี้ ถ้าคุณต้องการให้ฟังก์ชัน DLookup ยึดตามค่าที่เปลี่ยนแปลง ก่อนอื่นคุณต้องบันทึกการเปลี่ยนแปลงโดยการคลิก บันทึกระเบียน ภายใต้ ระเบียน บนแท็บ ข้อมูล การย้ายโฟกัสไปยังระเบียนอื่น หรือโดยใช้วิธี อัปเดต
ตัวอย่าง
หมายเหตุ: ตัวอย่างต่อไปนี้จะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทํางานกับ VBA ให้ดูที่ การอ้างอิง VBA ของ Access
ตัวอย่างต่อไปนี้ส่งกลับข้อมูลชื่อจากเขตข้อมูล CompanyName ของระเบียนที่ตรงกับเกณฑ์ โดเมนเป็นตารางผู้ขนส่งสินค้า อาร์กิวเมนต์ Criteria จํากัดชุดผลลัพธ์ของระเบียนไว้เฉพาะระเบียนที่ ShipperID เท่ากับ 1
Dim varX As Variant
varX = DLookup("[CompanyName]", _ "Shippers", "[ShipperID] = 1")
ตัวอย่างถัดไปจากตารางผู้ขนส่งสินค้าใช้ตัวควบคุมฟอร์ม ShipperID เพื่อให้เกณฑ์สําหรับฟังก์ชัน DLookup โปรดสังเกตว่าการอ้างอิงตัวควบคุมไม่ได้รวมอยู่ในเครื่องหมายอัญประกาศที่แสดงสตริง ซึ่งจะทําให้แน่ใจว่าทุกครั้งที่มีการเรียกฟังก์ชัน DLookupAccess จะได้รับค่าปัจจุบันจากตัวควบคุม
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & Forms!Shippers!ShipperID)
ตัวอย่างถัดไปใช้ตัวแปร intSearchเพื่อให้ได้ค่า
Dim intSearch As Integer
Dim varX As Variant intSearch = 1 varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & intSearch)