ฟังก์ชัน DLookup

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

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

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

ไวยากรณ์

DLookup(expr, domain [, criteria])

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

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

ข้อสังเกต

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

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

ถ้ามีเขตข้อมูลตรงกับ มากกว่าหนึ่งเขตข้อมูล criteriaDLookup ฟังก์ชันจะส่งกลับเหตุการณ์แรก คุณควรระบุเกณฑ์ที่ตรวจสอบให้แน่ใจว่าค่าเขตข้อมูลที่ส่งกลับโดย 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จะจํากัดชุดผลลัพธ์ของระเบียนไว้เฉพาะระเบียนที่ShipperIDเท่ากับ1

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)