allday/컴퓨터활용능력

1급 액세스 (Me.filter)

람모니 2023. 4. 28. 15:29

1급 액세스에서 가장 킹받는 것 중 하나는,

필드명과 컨트롤을 비교하는 방법이다.

주로 이벤트 프로시저에서 출몰하며, 5점밖ㅇㅔ안주면서 사람을 꽤 귀찮게한다.

 

그래도 암기하고 익숙해진다면 편하다.

me.filter나 recordsource, bookmark 등등에서 활용이 가능하다.

 

현재 폼에 자동으로 필터를 만들어주는 me. filter

쓰는 방법을 모른다면, 일일이 속성 시트-필터에 가서, 내가 찾고 싶은 조건을 입력해야한다.

이런 식으로..?

 

수동을 자동으로 해주는 기능이라 생각하면 될 듯!

 

기본 구문
me.filter = "필드명 = 컨트롤명"
me.filteron = true

 

필드명과 고정값 비교 (쉬움)

예를들어 학과필드에서 '회계학과' 라는 조건에 맞는 값만 보여주고 싶다하면,

  1.  먼저, 문장 전체를 " " 로 묶어준다.
    (me.filter = "조건"  위에 적은 기본구문에도 " "가 이미 있긴 하다.)

    ("학과=회계학과")

  2.  회계학과라는건 문자이기 때문에, " "를 붙여준다.
    ("학과="회계학과" ")

  3.  근데! 이미 바깥에 " "가 있으니, 중복으로 쓸수가없다. 그래서 ' '(작은따옴표)로 바꿔준다.
    ("학과 = ' 회계학과 ' ")

문제는 이제,

필드명과 변하는값(컨트롤) 비교

더보기

※ 컨트롤이란!
값이 계속 바뀔 수 있는 칸. 

밑에 예시처럼, txt학과명에는 회계학과뿐만 아니라 컴퓨터학과, 경영학과 등이 올 수 있다.

예를들어, txt학과명에 입력한 값과 학과 필드값같은 자료만 보여주고 싶으면,

  1. 먼저, 위와같이 문장 전체를 " " 로 묶어준다.
    ("학과 = txt학과명")

  2. 컨트롤(txt학과명)에는 문자가 들어간다. 그래서 " "를 붙여준다.
    ( "학과 = " txt학과명 " ")

  3. 그런데, " "가 중복으로 들어갈 수 없어서, ' '(작은따옴표)로 바꿔준다.
    ( "학과 = '  txt학과명 ' " )

  4. 필드를 " "를 이용해 묶어준다.
    ( "학과 =  ' " txt학과명 ' " )

  5. txt학과명 뒤에 있는 ' " , 작은 따옴표를 기준으로 오른팔(")은 있지만 왼팔(")이 없으니 넣어준다.
     ( "학과 =  ' " txt학과명  " ' " )

  6. 필드와 컨트롤 사이를 & 연산자 이용하여 연결시켜준다.
    ( "학과 =  ' " & txt학과명 &  " ' " )
    & 연산자 주위에는 반드시 띄어쓰기!

 

 

"학과 =  ' " & txt학과명 &  " ' " 
이 수식이, 필드와 컨트롤을 비교하는 기본식(문자형)이다.

 

 

보고서에서 많이 보이는 문제,

"현재 페이지는" & [page] & "입니다."

(필드명)              (컨트롤값)

 

[page] 도 숫자값이 계속 바뀌기 때문에 매개변수로 처리 후

양 옆에 & 연산자를 붙여주는 것처럼

이렇게 생각해서 풀어도 괜찮을 것 같담..

 

더보기

※ 쿼리에서!

Like " * " & [이름을 입력하세요.] & "*"

이런 문제를 경험해본적이 있다면, 조금 더 괜찮을까..? ㅜ

txt학과명 = [이름을 입력하세요] 같이, 변하는 값 주위에는 &를 이용해준다.

 

하지만, 더 큰 문제는

컨트롤 값이 <숫자,날짜,포함하는 문제>에 따라 위치가 달라진다! (찌밤)

컨트롤값이 숫자형일때  
"학번 = ' " & txt학번 & " '  " 일단 기본형(문자)으로 만들어놓는다.
"학번 = ' " & txt학번 & " '  "
"학번 =  " & txt학번 & "   "
' ' <- 이게 문자의 의미이므로, 숫자일땐 필요없으니 지운다.
"학번 =  " & txt학번 & "   " " " 이친구들은, 감싸줄 대상이 사라졌으니 있을 필요가 없다.
"학번 =  " & txt학번 & & 뒤에 나올 것이 없으므로 얘도 지워준다.
"학번 =  " & txt학번 숫자형 완성!

 

컨트롤값이 날짜형일때 (액세스에서는 날짜(년-월-일) 앞뒤로 #을 붙여준다. 예) #2023-04-28#
"날짜 = ' " & txt날짜 & " '  " 일단 기본형(문자)으로 만들어놓는다.
"날짜 = ' " & txt날짜 & "  '  " ' ' <- 이게 문자의 의미이므로, 지워준다.
"날짜 = # " & txt날짜 & " #  " 작은 따옴표가 없어진 자리에 #을 넣는다.
"날짜 = # " & txt날짜 & " #  " 날짜형 완성!

 

컨트롤값을 포함하는 문제일때 ( *김밥* 을 쓰면, 액세스에서 자동으로 Like "*김밥*" 으로 만들어준다.)

 Like "*김밥*" 을 굳이 하나씩 나누자면 Like " * " & 김밥 & " * "
"음식 = ' " & txt메뉴 & " ' " 일단 기본형(문자)으로 만들어놓는다.
"음식 Like ' " & txt메뉴 & " ' " = 대신 Like 를 넣어준다.
"음식 Like ' " & txt메뉴 & " ' " ' "" ' 사이에 포함하는 기호인 *을 넣어준다.
"음식 Like ' * " & txt메뉴 & " * ' " 포함하는 문제 완성!
번외
"음식 Like '  " & txt메뉴 & " * ' "
김* <- 김으로 시작하는 문장
마찬가지로 뒤에 *이 하나 있으면,
컨트롤명으로 시작하는 값을 찾아온다.
번외
"음식 Like ' * " & txt메뉴 & "  ' "
*밥 <- 밥으로 끝나는 문장
앞에 *이 하나 있으므로,
컨트롤명으로 끝나는 값을 찾아온다.

 


일단 나는, 이런식으로 연습을 꾸준히 했었담.

그래도 1트만에 합격해서, 더러운 모습을 더 안봐서 좋았다.

 

 

무슨 말인지 모르겠다면, 암기가 좋을 것 같다...

글로 전하려다보니 어렵다. ㅜㅜ

그래도 손에 익으면, 그렇게 어렵지 않은 문제이당~ 

다들 화이팅 ㅇㅅㅇ!