형식 : =Dcount("필드" , "테이블" , "조건")
정의 : 조건과 일치하는 레코드 수죠.
전체 레코드의 수를 나타내는 함수와는 차이가 있습니다.
=count([필드명]) --> 공백(Null) 제외
=count(*) -->공백(Null) 포함
아래와 같은 테이블(테이블 이름은 테이블로 했습니다.)을 작성한 경우일 때
1)정확하게 일치하는 경우 : 주소지가 서대문구인 레코드의 수?
=DCOUNT("주소","테이블","주소='서대문구'") 이렇게 작성하셔야 합니다. 마지막 조건만 부연설명을 하자면 원래 문자에는 ""처리를 해도 관계가 없습니다. 액세스에서는 말입니다. 쿼리를 이용하여 테스트를 해보시면 알겠지만 "서대문구" 또는 '서대문구' 다 같은 결과가 나옵니다. (그러나 SQL문에서는 문자는 ''처리하셔야 합니다. 액세스는 소규모 데이터베이스 구축이나 MS-SQL 또는
Oracle SQL을 위한 연습하도록 만든 프로그램이며 비슷한듯 하면서도 다른 면도 많습니다.)
공통점은 ""조건으로 둘러싼 내부에 문자를 표현하고자 하는 경우입니다. 안에 다시 ""처리를 하면 경계가 어딘지 모르게 되므로
""조건 내부에는 문자를 ''처리를 하는겁니다. 따라서 "주소='서대문구'"라는 조건이 이제 이해가 가실겁니다.
-1)일부 일치하는 경우 : 주소지가 강으로 시작하는 레코드의 수?
=DCOUNT("주소","테이블","주소 like '강*'") =DCOUNT("주소","테이블","주소 like '강'&'*'") 를 사용하셔야 합니다. 중요하죠.. 일치는 =인데 부분 일치는 like 연산자를 사용하는게.... 아마도 아시면서도 실제 사용하면 실수를 많이 하실겁니다.
-2)일부 일치하는 경우 : 주소지가 대문구로 끝하는 레코드의 수?
=DCOUNT("주소","테이블","주소 like '*대문구'") =DCOUNT("주소","테이블","주소 like '*'&'대문구'")
-3)일부 일치하는 경우 : 주소지에 대문이 들어가는 모든 레코드의 수?
=DCount("주소","테이블","주소 like '*대문*'") =DCount("주소","테이블","주소 like '*'&'대문'&'*'")
-1)날짜 사용하기 : 2007년 5월 20일과 같은 날짜의 레코드 수는?
=DCOUNT("주소","테이블","날짜=#2007-05-20#")
보시는 것처럼 날짜는 ‘년-월-일’형태로 주어집니다. 엑셀에서는 날짜가 직접 수식에 참여하면 “”처리를 하는건 아시죠?(예를 들면 =Year("2007-07-17")이렇게 말입니다. 왜 그럴까요? 제가 생각하기에는 년-월-일로 표시되는 날짜가 한덩어리라는걸 컴퓨터에 알려줘야 한다는 거죠? 아마도 그래서 묶음 처리하는게 아닐까 싶습니다.)
마찬가지로 액세스에서도 “”대신에 #날짜#처리를 하셔야 합니다. 이것만 기억하시길....
-2)날짜 사용하기 : 2007년인 레코드 수는?
=DCOUNT("주소","테이블","year(날짜)=2007")
-3)날짜 사용하기 : 2007년이면서 동시에 5월인 레코드 수는?
=DCOUNT("주소","테이블",“year(날짜)=2007 AND MONTH(날짜)=5”)
엑셀과 다르죠.. 엑셀은 AND(비교조건식1,비교조건식2,......비교조건식30)인데 액세스는 중간에 AND나 OR를 비교조건식 사이에
기입합니다....
최근에 날짜가 입력된 텍스트상자를 이용해서 조건을 구현하는 문제가 출제되는거 같군요...
공부하시는데 도움이 되었음 합니다.
D함수("금액", "소비", "Year(날짜) = " & Year(txt날짜) & " AND Month(날짜) = " & Month(txt날짜))
이제 이해를 하셨을거라 믿고요..이젠 시험 문제가 요구하는 걸로 가보겠습니다.
DSUM이 이미 출제가 된걸로 알고 있습니다. 너무 어려웠던 문제이기도 햇지만 옆에 잇는 컨트롤을 보고 그대로 배껴써도 �던 문제였죠..(언젠지는 저도 기억이 ㅠ_ㅠ;; 그때 이런 생각을 햇습니다. 차라리 출제를 하지말지 똑같은 문구의 컨트롤 상자에 필드만 다르게 쓰는걸 하난 다 채우고 나머지는 비워두고... 상공회의소를 원망했지만서도......)
컨트롤 상자의 값을 받아서 작성을 하는 경우도 마찬가지입니다. 이미 Docmd나 Filter에서 다루셨던 부분이라고 생각합니다.. 어렵죠 ^^
핵심은 컨트롤에는 절대 ''나 ""가 오면 안된다는거죠... 그래서 컨트롤 상자를 &로 따로 분리해서 전후로 "처리를 해주는게 포인트죠.
-아래 예제는 일부로 '와 "를 띄어쓰기 한겁니다. 잘보이게 하려고요. 오해 없으시기 바랍니다.
예를 들면 "성명 = ' " & txt이름 & " ' " 이거 많이 보셧죠? ㅎㅎㅎㅎ
원래 이것도 처음부터 전개한다면 "성명 = txt이름" --> "성명 = 'txt이름' "(txt이름이란 텍스트상자 안에 값이 문자이기 때문에) -
-> "성명 = ' & txt이름 & ' " --> "성명 = ' " & txt이름 & " ' "
이런 식의 흐름을 타는 거죠(열여덟 찾으시면서 진작 알려주지? 하시는 분들도 있을 겁니다. 맞나요?)
일부 일치를 요구하는 경우도 있죠?
성명 Like '*" & txt이름 & "*' " = "성명 Like '*' & ' " & txt이름 & " ' & '*' " 이렇게 됩니다. 둘 중에 어떤 걸 쓰시던 상관없습니다.
하나만 외우시고 사용하시고요.
그럼 날짜는 어떻게 하는지 아시겠죠?
날짜=#” & TxT일자 & “#” 또는 "month(날짜)=" & Month([Txt날짜]) & """
두서없이 몇자 적어봤습니다. 제가 생각하는 컴활 1급은 그래도 몬가 땡기는게 있지 싶습니다.
오기로 공부하시는 분들도 있고요.. 아무튼 이상한 매력이 있어 보입니다. ^^*
열공하시고요.
'IT 관련 > 엑세스' 카테고리의 다른 글
DBF 파일 연결하는 방법 (3) | 2012.10.29 |
---|---|
Dcount 따옴표 설명 (3) | 2012.07.18 |
Dcount 함수로 순위(또는 석차) 구하기 (2) | 2012.07.18 |
Dcount 함수로 순위 구하기 (0) | 2012.07.06 |
통합쿼리 (UNION) (4) | 2012.04.20 |