access 필터 조건문 작성

반응형

ACCESS vba 필터 조건문 작성

 

컴활 1급 기출 문제에서 보면 조건을 사용해서 원하는 데이터만 추출 필터링하는 vba 프로시저를 작성하라는 문제가 나옵니다. ACCESS 에서는 조건을 넣어 데이터를 필터링하는 함수, 속성 여러 기능을 제고하고 있으며 거의 sql Where절의 "WHERE" 없는 WHRERE절 조건식입니다. 조건식은 문자열로 작성됩니다.

폼에 필터할 데이터를 컨트롤에 입력하고 command 버튼을 클릭하여 필터링하는 이벤트 vba 프로시저를 작성하는 내용을 예로 들어보겠습니다.

ACCESS

 

아래는 필터링하는 vba 구문 예입니다.

 

문자 데이터 필터 조건식

 

Me.Filter = "이름='" & txt이름조회 & "'"
Me.FilterOn = True
Me.Filter = 우측 내용이 조건식이고 Me.FilterOn = True 는 필터를 실행하는 명령입니다. 이름필드와 txt이름조회 컨트롤의 문자 데이터 비교 연산입니다. 조건식을 보면 필드명, 컨트롤명, 큰따옴표, 작은 따옴표, =, & 연산자의 조합으로 이루어져 있어 난해하게 보입니다.

 

 


 

위의 조건식은 문자 데이터를 조건으로 필터하는 조건식입니다. 이 식을 분해해 보겠습니다.

  • 위 식의 1번은 "이름='" 입니다. 이부분을 MsgBox로 출력하면 결과는 이름=' 입니다 큰따옴표 안에 작은 따옴표를 묶었기때문에 =우측에 작은따옴표가 (') 표시됐습니다.
  • 우측의 & 는 데이터 결합 연산자입니다. & 우측 조건 변수인 2번 txt이름조회 컨트롤이름=' 과 결합니다. txt이름조회 컨트롤에 홍길동이 입력된 경우 결과는 이름='홍길동 이 되겠지요.
  • 그 우측 또한 결합 연산자입니다. 이름='홍길동' 과 우측 "'" 의 값은 작은따옴표(')입니다. 결합하면 이름='홍길동' 이 됩니다. 이름 필드와 '홍길동'이라는 문자와 비교 연산하는 것이지요.
  • 컨트롤 변수 없이 직접 홍길동을 조건에 넣으려먼 Me.Filter = "이름='홍길동'" 과 같이 = 우측에 홍길동을 작은따옴표로 묶어 넣으면 이름필드 좌측 큰 따옴표와 우측 큰따옴표 속에 조건이 들어갑니다.
  • 위 조건식의 조합결과는 sql WHERE절의 조건문 형태가 됩니다. 위의 조사식 결과는 MsgBox 명령으로 출력된 결과입니다.
  • & 연산자는 단순히 결합 연산자인데 여러 데이터가 조합되니 어렵게 보였습니다.

위와 같은 방식으로 숫자 컨트롤, 날짜 컨트롤을 조건으로 하는 조건식도 알아 보겠습니다.

 

숫자 데이터 필터 조건식


 

 


위의 구문은 성적이 조건 이상인 숫자 데이터 필터의 예입니다.

  • 1번 "성적>=" 은 그대로 성적>= 입니다,
  • 우측의 & 연산자로 조건 변수 2번 txt성적조회 컨트롤을 결합합니다.
  • txt성적조회에 80이 입력돼 있으면 결과는 성적>=80 입니다. 따옴표 결합이 없으니 간단합니다.

 

날짜 데이터 필터 조건

 

 

 


  • 날짜 데이터는 #날짜# 와 같이 # 으로 날짜데이터를 묶습니다.
  • 1번 "생년월일>=#"생년월일>=# 입니다.
  • 우측 & 연산자로 조건 변수 txt생년월일 을 결합합니다. txt생년월일조회에 2002-01-01이 입력됐다면 생년월일>=#2002-01-01 이 됩니다.
  • 우측 & 연산자로 3번 "#" 를 결합나다.
  • 결과는 생년월일>=#2002-01-01# 이 됩니다.

 

 

Like 연산자 와일드 문자 필터 조건

 

 

같은 성의 데이터를 필터링합니다.

  • 와일드 문자 * 와 Like 연산자를 사용합니다.
  • 1번 "이름 Like '"이름 Like ' 입니다. 식의 우측 큰 따옴표 앞의 작은 따옴표가 우측에 표시됩니다.
  • 우측 & 연산자로 조건 변수 2번 txt성 컨트롤을 결합합니다.
  • txt성 컨트롤에 홍이 입력돼 있으면 이름 Like '홍 이 됩니다.
  • & 연산자로 3번 우측 "*'" 의 값은 *' 입니다. 결합하면 이름 Like '홍*' 이됩니다. 성 부분 홍이 작은 따옴표로 묶여 있기때문에 와일드 문자 * 를 작은 따옴표 앞에 위치시킵니다.

 

반응형