본문 바로가기

Tech/Data Base

Access - 조회속성 4가지와 조건문 문법

Task : <학생봉사내역>폼의 'txt조회'컨트롤에 학번을 입력하고, '봉사내역' 버튼(cmd봉사내역)을 클릭하면 입력된 학번에 해당하는 정보를 보여주는 기능을 수행하도록 구현할 것.

 

조회속성

  1. filter : 조건에 맞는 레코드만 보여주고 나머지는 숨김
    > 레코드 전체를 숨기기만 할 뿐 가지고는 있으므로 필터를 해제하면 전체 레코드를 다시 볼 수 있다.
  2. recordSource : 조건에 맞는 테이블의 정보를 찾아 레코드 원본으로 재설정.
    > 레코드중 조건에 맞는 레코드만으로 새로운 레코드셋을 만든것이며, 전체 레코드를 가지고 있는 것이 아님
  3. recordsetClone : 전체 레코드중 첫번째로 일치하는 값을 찾아서 커서 이동.
  4. applyFilter : filter와 같은 기능. 단, 메크로로 작성 가능

 

 

각 조회속성별 작성법

 

  ▷ 큰따옴표와 작은따옴표 등의 사용방법

1. 조건문은 <"> 로 감싼다
2. 컨트롤은 따옴표 밖으로 빠져나와 있어야 한다.
3. 텍스트는 <"> 로 감싼다. 단, <"> 의 쌍이 틀어질 경우가 있을 경우에는 <"> 대신 <'> 를 쓴다.
4. 숫자는 <">로 감싸지 않는다.
5. 날짜는 <#>로 감싼다.
6. 포함하는 문자열은 와일드카드(*)로 감싼다.

 


  ▷ 조회속성에 들어가는 조건문의 문법

 - txt조회 컨트롤에 들어가는 데이터 형식에 따라

구현할 조건식 : "학번 = txt조회"

(1) 텍스트 
    단계 1 : txt조회는 텍스트 형식이므로 >>> "학번="txt조회""
    단계 2 : txt조회는 컨트롤이므로 따옴표 밖으로 나와야 하므로 >>> "학번="" & txt조회 & """
    단계 3 : <">가 반복적으로 쓰여 pair가 맞지 않으므로 >>> "학번='" & txt조회 & "'"

(2) 숫자
    단계 1 : txt조회는 컨트롤이므로 따옴표 밖으로 나와야 한다. >>> "학번=" & txt조회 & """
    단계 2 : 맨 뒤 <& """>는 아무런 역할도 하고 있지 않으므로 생략 >>> "학면=" & txt조회

(3) 날짜
    단계 1 : txt조회는 날짜이므로 <#>로 감싼다. >>> "학번 = #txt조회#"
    단계 1 : txt조회는 컨트롤이므로 따옴표 밖으로 나와야 한다. >>> "학번 = #" & txt조회 & "#"

(4) 포함하는 문자열
    단계 1 : 포함하는 문자열이므로 <=>이 아닌 <like> 연산자를 사용한다 >>> "학번 like txt조회"
    단계 2 : txt조회를 포함하는 문자열을 검색하므로 <*>로 감싸고 그것을 <">로 또 감싼다 >>> "학번 like "*txt조회*""
    단계 3 : txt조회는 컨트롤이므로 <">밖으로 뺀다. >>> "학번 like "*" & txt조회 & "*""
    단계 4 : <">의 pair가 엉키므로 대신 <'>를 쓴다. >>> "학번 like '*" & txt조회 & "*'"

 

조회속성별 작성법

 

   Private Sub cmd봉사내역_Click()

                여기에 들어갈 코드         

   End Sub

  1.  filter

    Me.Filter="학번='" & txt조회 &"'" <<< 텍스트일 경우
    Me.FilterOn = True

    Me.Filter="학번=" & txt조회 <<< 숫자일 경우
    Me.FilterOn = True

    Me.Filter="학번=#" & txt조회 &"#" <<< 날짜일 경우
    Me.FilterOn = True

    Me.Filter="학번 like'*" & txt조회 &"*'" <<< 포함하는문자열일 경우
    Me.FilterOn = True


  2.  Record Source

    > [봉사내역종합]이라는 테이블 또는 쿼리 중, 조건(where이하)에 맞는 모든 레코드(*)를 골라낸다.
    > where이하 조건 : [학번]필드가 'txt조회'의 내용과 일치하는...

    Me.RecordSource = "select * from 봉사내역종합 where 학번='" & txt조회 &"'" <<< 텍스트일 경우
    Me.RecordSource = "select * from 봉사내역종합 where 학번=" & txt조회 <<< 숫자일 경우
    Me.RecordSource = "select * from 봉사내역종합 where 학번=#" & txt조회 &"#" <<< 날짜일 경우
    Me.RecordSource = "select * from 봉사내역종합 where 학번 like '*" & txt조회 &"*'" <<< 포함하는문자열일 경우

  3.  recordsetClone

    me.RecordsetClone.FindFirst "학번='" & txt조회 &"'" <<< 텍스트일 경우
    me.Bookmark = Me.RecordsetClone.Bookmark

    me.RecordsetClone.FindFirst "학번=" & txt조회 <<< 숫자일 경우
    me.Bookmark = Me.RecordsetClone.Bookmark

    me.RecordsetClone.FindFirst "학번=#" & txt조회 &"#" <<< 날짜일 경우
    me.Bookmark = Me.RecordsetClone.Bookmark

    me.RecordsetClone.FindFirst "학번 like'*" & txt조회 &"*'" <<< 포함하는문자열일 경우
    me.Bookmark = Me.RecordsetClone.Bookmark


  4.  applyFilter

    DoCmd.ApplyFilter ,  "학번='" & txt조회 &"'" <<< 텍스트일 경우
    DoCmd.ApplyFilter ,  "학번=" & txt조회 <<< 숫자일 경우
    DoCmd.ApplyFilter ,  "학번=#" & txt조회 &"#" <<< 날짜일 경우
    DoCmd.ApplyFilter ,  "학번 like'*" & txt조회 &"*'" <<< 포함하는문자열일 경우


 

본 내용은 유튜버 '함수바라기'님의 아래 강좌를 정리한 것입니다.

https://www.youtube.com/watch?v=2LwnKkn_9As&t=686s

'Tech > Data Base' 카테고리의 다른 글

VBA - 상수/변수  (0) 2021.07.05