Task : <학생봉사내역>폼의 'txt조회'컨트롤에 학번을 입력하고, '봉사내역' 버튼(cmd봉사내역)을 클릭하면 입력된 학번에 해당하는 정보를 보여주는 기능을 수행하도록 구현할 것.
▶ 조회속성
- filter : 조건에 맞는 레코드만 보여주고 나머지는 숨김
> 레코드 전체를 숨기기만 할 뿐 가지고는 있으므로 필터를 해제하면 전체 레코드를 다시 볼 수 있다. - recordSource : 조건에 맞는 테이블의 정보를 찾아 레코드 원본으로 재설정.
> 레코드중 조건에 맞는 레코드만으로 새로운 레코드셋을 만든것이며, 전체 레코드를 가지고 있는 것이 아님 - recordsetClone : 전체 레코드중 첫번째로 일치하는 값을 찾아서 커서 이동.
- 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
- 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 - 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조회 &"*'" <<< 포함하는문자열일 경우 - 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 - 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 |
---|