DLookup 함수

적용 대상
Microsoft 365용 Access Access 2024 Access 2021 Access 2019 Access 2016

Access 데스크톱 데이터베이스에서 함수를 DLookup 사용하여 지정된 레코드 집합(도메인)에서 특정 필드의 값을 가져올 수 있습니다. VBA(Visual Basic for Applications) 모듈, 매크로, 쿼리 식 또는 폼이나 보고서의 계산 컨트롤에서 를 사용할 DLookup 수 있습니다.

함수를 DLookup 사용하여 폼이나 보고서의 레코드 원본에 없는 필드의 값을 표시할 수 있습니다. 예를 들어 주문 세부 정보 테이블을 기반으로 하는 양식이 있다고 가정해 보겠습니다. 양식에는 , , ProductIDUnitPrice, QuantityDiscount 필드가 표시됩니다OrderID. 그러나 ProductName 필드는 다른 테이블인 테이블에 있습니다 Products . 계산된 컨트롤에서 DLookup 함수를 사용하여 동일한 폼에 표시 ProductName 할 수 있습니다.

구문

DLookup(expr, domain [, criteria])

함수에는 DLookup 다음과 같은 인수가 있습니다.

인수 설명
expr 필수 요소입니다. 반환하려는 값을 가진 필드를 식별하는 식입니다. 테이블 또는 쿼리의 필드를 식별하는 문자열 식이거나 해당 필드의 데이터에 대한 계산을 수행하는 식일 수 있습니다. 에서 expr테이블의 필드 이름, 폼의 컨트롤, 상수 또는 함수를 포함할 수 있습니다. 함수가 포함된 경우 expr 기본 제공 또는 사용자 정의일 수 있지만 다른 도메인 집계 또는 SQL 집계 함수는 사용할 수 없습니다.
domain 필수 요소입니다. 도메인을 구성하는 레코드 집합을 식별하는 문자열 식입니다. 매개 변수가 필요하지 않은 쿼리의 테이블 이름 또는 쿼리 이름일 수 있습니다.
criteria 선택 요소입니다. 함수가 실행되는 데이터 DLookup 범위를 제한하는 데 사용되는 문자열 식입니다. 예를 들어 criteria 은 단어 WHERE없이 식의 WHERE 절과 SQL 동일한 경우가 많습니다. 를 생략 criteria하면 함수가 DLookup 전체 도메인에 대해 평가됩니다 expr . 에 포함된 모든 필드는 의 criteriadomain필드여야 합니다. 그렇지 않으면 함수는 를 DLookup 반환합니다 Null.

주의

함수는 DLookup 에 지정된 정보에 따라 단일 필드 값을 반환합니다 criteria. 는 선택 사항이지만 criteria 값을 제공하지 않으면 함수는 DLookup 도메인에서 임의의 값을 반환합니다.

를 충족하는 레코드가 criteria없거나 레코드가 없는 경우 domain 함수는 를 DLookup 반환합니다 Null.

둘 이상의 필드가 충족되는 경우 함수는 DLookup 첫 번째 항목을 반환합니다criteria. 에서 반환 DLookup 된 필드 값이 고유하도록 조건을 지정해야 합니다. 다음 예제와 같이 [EmployeeID] 조건에 대한 기본 키 값을 사용하여 고유 값을 반환하도록 할 DLookup 수 있습니다.

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

매크로나 모듈, 쿼리 식 또는 계산된 컨트롤에서 함수를 사용 DLookup 하든 Access에서 올바르게 평가되도록 인수를 신중하게 구성 criteria 합니다.

함수를 DLookup 사용하여 쿼리의 Criteria 행, 쿼리의 계산된 필드 식 내 또는 업데이트 쿼리의 업데이트 행 에서 조건을 지정할 수 있습니다.

표시해야 하는 필드가 DLookup 폼이나 보고서의 기반이 되는 레코드 원본에 없는 경우 폼이나 보고서의 계산된 컨트롤에서 식에서 함수를 사용할 수도 있습니다. 예를 들어 필드를 표시하는 ProductID 라는 ProductID 텍스트 상자가 있는 주문 세부 정보 테이블을 기반으로 하는 주문 세부 정보 양식이 있다고 가정해 보겠습니다. 텍스트 상자의 Products 값을 기준으로 테이블에서 조회 ProductName 하려면 다른 텍스트 상자를 만들고 ControlSource 속성을 다음 식으로 설정합니다.

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

  • DLookup 함수를 사용하여 외대 테이블의 필드 값을 표시할 수 있지만 두 테이블에서 필요한 필드가 포함된 쿼리를 만든 다음 해당 쿼리에 대한 폼이나 보고서를 기반으로 하는 것이 더 효율적일 수 있습니다.
  • 조회 마법사를 사용하여 외래 테이블의 값을 찾을 수도 있습니다.

참고

이 함수를 사용할 때 의 레코드에 domain 저장되지 않은 변경 내용은 포함되지 않습니다. 변경된 값을 사용하려면 DLookup 먼저 데이터 탭의 레코드 아래에서 레코드 저장을 클릭하거나 포커스를 다른 레코드로 이동하거나 메서드를 사용하여 Update 변경 내용을 저장합니다.

예제

참고

VBA(Visual Basic for Applications) 모듈에서 이 함수를 사용하는 경우를 예로 들어 보겠습니다. VBA 작업에 대한 자세한 내용은 액세스 VBA 참조를 참조하세요.

다음 예제에서는 를 충족하는 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)