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

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

구문

DLookup( expr, domain [, criteria] )

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

인수

설명

expr

필수 요소입니다. 반환하려는 값을 가진 필드를 식별하는 식입니다. 테이블 또는 쿼리에서 필드를 식별하는 문자열 식 또는 해당 필드의 데이터에 대한 계산을 수행하는 식일 수 있습니다. expr에서 테이블의 필드 이름, 폼의 컨트롤, 상수 또는 함수를 포함할 수 있습니다. expr에 함수가 포함된 경우 기본 제공 또는 사용자 정의일 수 있지만 다른 도메인 집계 또는 SQL 집계 함수는 사용할 수 없습니다.

domain

필수 요소입니다. 도메인을 구성하는 레코드 집합을 식별하는 문자열 식입니다. 매개 변수가 필요하지 않은 쿼리의 테이블 이름 또는 쿼리 이름일 수 있습니다.

criteria

선택 요소입니다. DLookup 함수가 수행되는 데이터 범위를 제한하는 데 사용되는 문자열 식입니다. 예를 들어 criteria 는 WHERE라는 단어가 없는 SQL 식의 WHERE 절과 동일한 경우가 많습니다. 조건을 생략하면 DLookup 함수는 전체 도메인에 대해 expr을 평가합니다. 조건에 포함된 모든 필드는 도메인의 필드여야 합니다. 그렇지 않으면 DLookup 함수가 Null을 반환합니다.

주의

DLookup 함수는 criteria에 지정된 정보를 기준으로 단일 필드 값을 반환합니다. criteria는 선택 인수이지만 criteria에 값을 지정하지 않으면 DLookup 함수는 도메인에 있는 임의의 값을 반환합니다.

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

여러 필드가 criteria를 충족하는 경우 DLookup 함수는 일치하는 첫 번째 항목을 반환합니다. DLookup 함수가 고유한 필드 값을 반환하도록 조건을 지정해야 합니다. 기본 키 값, 즉 다음 예제의 [EmployeeID]와 같은 값을 조건으로 사용하면 DLookup 함수가 고유한 값을 반환합니다.

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

DLookup 함수를 매크로, 모듈, 쿼리 식 또는 계산 컨트롤 중 어디에서 사용하는지에 관계없이 criteria 인수를 주의 깊게 작성하여 이 인수가 올바르게 계산되도록 해야 합니다.

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

표시해야 하는 필드가 폼이나 보고서의 기반이 되는 레코드 원본에 없는 경우 폼이나 보고서의 계산 컨트롤에 있는 식에서 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 참조를 참조하세요.

아래 예제에서는 criteria를 충족하는 레코드의 CompanyName 필드에서 이름 정보를 반환합니다. 도메인은 Shippers 테이블입니다. criteria 인수는 결과 레코드 집합을 ShipperID가 1인 레코드로 제한합니다.

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

Shippers 테이블의 다음 예제에서는 양식 컨트롤 ShipperID를 사용하여 DLookup 함수에 대한 조건을 제공합니다. 컨트롤에 대한 참조는 문자열을 나타내는 따옴표에 포함되지 않습니다. 이렇게 하면 DLookup 함수가 호출될 때마다 Access 컨트롤에서 현재 값을 가져옵니다.

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

다음은 intSearch 변수를 사용하여 값을 가져오는 예제입니다.

Dim intSearch As IntegerDim varX As VariantintSearch = 1varX = DLookup("[CompanyName]", "Shippers", _    "[ShipperID] = " & intSearch)

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.