DCount 함수를 사용하여 지정된 레코드 집합( 도메인 )에 있는 레코드 수를 확인할 수 있습니다. VBA(Visual Basic for Applications) 모듈, 매크로, 쿼리 식 또는 계산된 컨트롤DCount 함수를 사용합니다.
예를 들어 모듈에서 DCount 함수를 사용하여 특정 날짜에 배치된 주문에 해당하는 Orders 테이블의 레코드 수를 반환할 수 있습니다.
구문
DCount ( expr , domain [, criteria] )
DCount 함수 구문에는 다음과 같은 인수가 사용됩니다.
인수 |
설명 |
expr |
필수 요소입니다. 레코드를 계산할 필드를 식별하는 식입니다. 테이블 또는 쿼리에서 필드를 식별하는 문자열 식 또는 해당 필드의 데이터에 대한 계산을 수행하는 식일 수 있습니다. expr에서 테이블의 필드 이름, 폼의 컨트롤, 상수 또는 함수를 포함할 수 있습니다. expr에 함수가 포함된 경우 기본 제공 또는 사용자 정의일 수 있지만 다른 도메인 집계 또는 SQL 집계 함수는 사용할 수 없습니다. |
domain |
필수 요소입니다. 도메인을 구성하는 레코드 집합을 식별하는 문자열 식입니다. 매개 변수가 필요하지 않은 쿼리의 테이블 이름 또는 쿼리 이름일 수 있습니다. |
criteria |
선택 요소입니다. DCount 함수가 수행되는 데이터 범위를 제한하는 데 사용되는 문자열 식입니다. 예를 들어 criteria 는 WHERE라는 단어가 없는 SQL 식의 WHERE 절과 동일한 경우가 많습니다. 조건을 생략하면 DCount 함수는 전체 도메인에 대해 expr을 평가합니다. 조건에 포함된 모든 필드는 도메인의 필드여야 합니다. 그렇지 않으면 DCount 함수가 Null을 반환합니다. |
주의
DCount 함수를 사용하여 특정 값을 알 필요가 없는 경우 도메인의 레코드 수를 계산합니다. expr 인수는 필드에서 계산을 수행할 수 있지만 DCount 함수는 레코드 수를 단순히 집계합니다. expr에서 수행한 계산 값을 사용할 수 없습니다.
함수가 수행되는 데이터 범위를 제한하는 조건을 지정해야 하는 경우 계산된 컨트롤에서 DCount 함수를 사용합니다. 예를 들어 캘리포니아로 배송할 주문 수를 표시하려면 텍스트 상자의 ControlSource 속성을 다음 식으로 설정합니다.
=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
제한을 지정하지 않고 도메인 의 모든 레코드를 계산하려면 Count 함수를 사용합니다.
팁 Count 함수는 쿼리에서 레코드 수를 빠르게 계산하도록 최적화되었습니다. DCount 함수 대신 쿼리 식에서 Count 함수를 사용하고 선택적 조건을 설정하여 결과에 대한 제한을 적용합니다. 코드 모듈 또는 매크로 내에서 또는 계산된 컨트롤에서 도메인의 레코드를 계산해야 하는 경우 DCount 함수를 사용합니다.
DCount 함수를 사용하여 폼이나 보고서의 기반이 되는 레코드 원본에 없는 특정 필드가 포함된 레코드 수를 계산할 수 있습니다. 예를 들어 Products 테이블을 기반으로 하는 폼의 계산된 컨트롤에 Orders 테이블의 주문 수를 표시할 수 있습니다.
DCount 함수는 expr이 별표(*) 와일드카드 문자가 아닌 한 expr에서 참조하는 필드에 Null 값을 포함하는 레코드를 계산하지 않습니다. 별표 를 사용하는 경우 DCount 함수는 Null 필드가 포함된 레코드를 포함하여 총 레코드 수를 계산합니다. 다음 예제에서는 Orders 테이블의 레코드 수를 계산합니다.
intX = DCount("*", "Orders")
도메인 이 기본 키 있는 테이블인 경우 기본 키 필드에 Null이 없으므로 expr을 기본 키 필드로 설정하여 총 레코드 수를 계산할 수도 있습니다.
expr 이 여러 필드를 식별하는 경우 앰퍼샌드(&) 또는 더하기 연산자(+)와 연결 연산자를 사용하여 필드 이름을 구분합니다. 앰퍼샌드를 사용하여 필드를 구분하는 경우 DCount 함수는 나열된 필드에 데이터가 포함된 레코드 수를 반환합니다. 더하기 연산자를 사용하는 경우 DCount 함수는 나열된 모든 필드에 데이터가 포함된 레코드 수만 반환합니다. 다음 예제에서는 모든 레코드(ShipName)의 데이터가 포함된 필드와 데이터가 없는 필드(ShipRegion)와 함께 사용할 때 각 연산자의 효과를 보여 줍니다.
intW = DCount("[ShipName]", "Orders")
intX = DCount("[ShipRegion]", "Orders") intY = DCount("[ShipName] + [ShipRegion]", "Orders") intZ = DCount("[ShipName] & [ShipRegion]", "Orders")
참고: 앰퍼샌드는 문자열 연결을 수행하기 위한 기본 연산자입니다. 식을 통해 Null 을 전파하려는 경우가 아니면 숫자 추가 이외의 항목에는 더하기 연산자를 사용하지 않아야 합니다.
이 함수에서는 domain의 레코드에 대한 변경 내용이 저장되지 않은 경우 해당 내용을 고려하지 않습니다. DCount 함수가 변경된 값을 기반으로 하려면 먼저 데이터 탭의 레코드 아래에서 레코드 저장을 클릭하거나 포커스를 다른 레코드로 이동하거나 Update 메서드를 사용하여 변경 내용을 저장해야 합니다.
쿼리 예제
Expression |
결과 |
SELECT DCount("ProductID","ProductSales","Discount=0") AS Expr1 FROM ProductSales GROUP BY DCount("ProductID","ProductSales","Discount=0"); |
"Discount" 값이 "0"인 테이블 "ProductSales"의 "ProductID" 필드에 있는 값 수를 반환합니다. |
SELECT DCount("ProductID","ProductSales","DateofSale=Date()-1") AS YesterdaySales GROUP BY DCount("ProductID","ProductSales","DateofSale=Date()-1"); |
"DateofSale"이 현재 날짜 하루 전인 테이블 "ProductSales"의 "ProductID" 필드에 있는 값 수를 반환합니다. |
VBA 예제
참고: VBA(Visual Basic for Applications) 모듈에서 이 함수를 사용하는 경우를 예로 들어 보겠습니다. VBA 사용에 대해 자세히 알아보려면 검색 옆의 드롭다운 목록에서 개발자 참고를 선택하고 검색 상자에 검색어를 하나 이상 입력하세요.
다음 함수는 지정된 배송 날짜 이후 지정된 국가/지역으로 배송되는 주문 수를 반환합니다. 도메인은 Orders 테이블입니다.
Public Function OrdersCount _
(ByVal strCountryRegion As String, _ ByVal dteShipDate As Date) As Integer OrdersCount = DCount("[ShippedDate]", "Orders", _ "[ShipCountryRegion] = '" & strCountryRegion & _ "' AND [ShippedDate] > #" & dteShipDate & "#") End Function
함수를 호출하려면 직접 실행 창에서 다음 코드 줄을 사용합니다.
:OrdersCount "UK", #1/1/96#