ฟังก์ชัน DLookup

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

ในฐานข้อมูลเดสก์ท็อปของ Access คุณสามารถใช้ฟังก์ชันนี้ DLookup เพื่อรับค่าของเขตข้อมูลเฉพาะจากชุดระเบียนที่ระบุ (โดเมน) ได้ คุณสามารถใช้ DLookup ในโมดูล Visual Basic for Applications (VBA) แมโคร นิพจน์คิวรี หรือตัวควบคุมที่คํานวณบนฟอร์มหรือรายงานได้

คุณสามารถใช้ฟังก์ชันนี้ DLookup เพื่อแสดงค่าของเขตข้อมูลที่ไม่ได้อยู่ในแหล่งระเบียนสําหรับฟอร์มหรือรายงานของคุณ ตัวอย่างเช่น สมมติว่าคุณมีแบบฟอร์มที่ยึดตามตารางรายละเอียดคําสั่งซื้อ ฟอร์มจะแสดงเขตข้อมูล , ProductID, , UnitPriceและ QuantityDiscountOrderID อย่างไรก็ตาม เขตข้อมูลนั้นProductNameอยู่ในอีกตารางหนึ่ง นั่นคือตารางProducts คุณสามารถใช้ฟังก์ชันใน DLookup ตัวควบคุมจากการคํานวณเพื่อแสดงบน ProductName ฟอร์มเดียวกันได้

ไวยากรณ์

DLookup(expr, domain [, criteria])

DLookupฟังก์ชันมีอาร์กิวเมนต์ดังนี้

อาร์กิวเมนต์ คำอธิบาย
expr จำเป็น นิพจน์ที่ระบุเขตข้อมูลที่มีค่าที่คุณต้องการส่งกลับ ซึ่งสามารถเป็นนิพจน์สตริงที่ระบุเขตข้อมูลในตารางหรือคิวรี หรืออาจเป็นนิพจน์ที่ทําการคํานวณข้อมูลในเขตข้อมูลนั้น ใน exprคุณสามารถใส่ชื่อของเขตข้อมูลในตาราง ตัวควบคุมบนฟอร์ม ค่าคงที่ หรือฟังก์ชันได้ ถ้า expr มีฟังก์ชันอยู่ อาจเป็นฟังก์ชันที่มีอยู่แล้วภายในหรือที่กําหนดโดยผู้ใช้ แต่ไม่ใช่ฟังก์ชันการรวมหรือ SQL การรวมโดเมนอื่น
domain จำเป็น นิพจน์สตริงที่ระบุชุดระเบียนที่สร้างโดเมน โดยอาจเป็นชื่อตารางหรือชื่อคิวรีสําหรับคิวรีที่ไม่จําเป็นต้องใช้พารามิเตอร์
criteria ไม่จำเป็น นิพจน์สตริงที่ใช้เพื่อจํากัดช่วงของข้อมูลที่ฟังก์ชัน DLookup เรียกใช้ ตัวอย่างเช่น มักจะ criteria เทียบเท่ากับ WHERE ส่วนคําสั่งใน SQL นิพจน์ โดยไม่มีคําว่า WHERE. ถ้าคุณละไว้ criteriaฟังก์ชันจะ DLookup ประเมินเทีย expr บกับโดเมนทั้งหมด เขตข้อมูลใดๆ ที่อยู่ในจะต้อง criteria เป็นเขตข้อมูลใน domain. มิฉะนั้นฟังก์ชันจะDLookupส่งกลับNull

ข้อสังเกต

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

ถ้าไม่มีระเบียนใดตรงกับ criteriaหรือไม่มีdomainระเบียนใดๆ ฟังก์ชันจะDLookupส่งกลับNull

ถ้ามีเขตข้อมูลมากกว่าหนึ่งเขตข้อมูลพบกัน criteriaฟังก์ชันจะ DLookup ส่งกลับผลลัพธ์ที่ปรากฏเป็นครั้งแรก คุณควรระบุเกณฑ์ที่ทําให้แน่ใจได้ว่าค่าเขตข้อมูลที่ส่งกลับนั้น DLookup ไม่ซ้ํากัน คุณอาจต้องการใช้ค่าคีย์หลักสําหรับเกณฑ์ของคุณ เช่นใน [EmployeeID] ตัวอย่างต่อไปนี้ เพื่อให้แน่ใจว่าได้ DLookup ส่งกลับค่าที่ไม่ซ้ํากัน

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

ไม่ว่าคุณจะใช้ DLookup ฟังก์ชันในแมโครหรือโมดูล นิพจน์คิวรี หรือตัวควบคุมจากการคํานวณ ก็สร้างอาร์กิวเมนต์อย่างระมัดระวัง criteria เพื่อให้ Access ประเมินได้อย่างถูกต้อง

คุณสามารถใช้ฟังก์ชันนี้ DLookup เพื่อระบุเกณฑ์ในแถว เกณฑ์ ของคิวรี ภายในนิพจน์เขตข้อมูลจากการคํานวณในคิวรี หรือในแถว อัปเดตเป็น ในคิวรีแบบใช้อัปเดตข้อมูล

คุณยังสามารถใช้ฟังก์ชันใน DLookup นิพจน์ในตัวควบคุมที่คํานวณบนฟอร์มหรือรายงานได้ถ้าเขตข้อมูลที่คุณต้องการแสดงไม่ได้อยู่ในแหล่งระเบียนที่ฟอร์มหรือรายงานของคุณยึดตาม ตัวอย่างเช่น สมมติว่าคุณมีฟอร์มรายละเอียดการสั่งซื้อที่ยึดตามตารางรายละเอียดคําสั่งซื้อที่มีกล่องข้อความที่ชื่อว่า ProductID แสดง ProductID เขตข้อมูล เมื่อต้องการค้นหา ProductName จาก Products ตารางโดยยึดตามค่าในกล่องข้อความ ให้สร้างกล่องข้อความอื่นและตั้งค่าคุณสมบัติ ControlSource เป็นนิพจน์ต่อไปนี้:

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

เคล็ดลับ

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

หมายเหตุ

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

ตัวอย่าง

หมายเหตุ

ตัวอย่างต่อไปนี้จะสาธิตการใช้ฟังก์ชันนี้ในโมดูล Visual Basic for Applications (VBA) สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการทํางานกับ VBA ให้ดูการอ้างอิง VBA ของ Access

ตัวอย่างต่อไปนี้จะส่งกลับข้อมูลชื่อจากCompanyNameเขตข้อมูลของระเบียนที่ตรงตามcriteria โดเมนคือตารางShippers อาร์กิวเมนต์จะcriteriaจํากัดชุดระเบียนที่เป็นผลลัพธ์ให้เท่ากับ1ShipperID

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

ตัวอย่างถัดไปจากตารางใช้ Shippers ตัวควบคุม ShipperID ฟอร์มเพื่อใส่เกณฑ์สําหรับ DLookup ฟังก์ชัน การอ้างอิงไปยังตัวควบคุมจะไม่รวมอยู่ในเครื่องหมายอัญประกาศที่ใช้แสดงสตริง ซึ่งทําให้แน่ใจว่าทุกครั้ง DLookup ที่ใช้งาน Access จะได้รับค่าปัจจุบันจากตัวควบคุม

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)