주소 12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일 | 고객센터 전화번호 02-467-2998 | 대표이사 염기웅
개인정보관리책임자 염기웅 (ml_privacy@td21.com) | 사업자등록번호 120-86-79260 | 통신판매업신고번호 제 2021-경기하남-1166 호 [사업자 정보 확인]
TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.
일단 원하시는 검색 방법이 날짜조건은 필수이고 전표구분은 필수인지 아닌지 몰라서 제 임의대로 해 보았습니다.
이 코드의 가장 중요한 점은 ConSQL에 기본 구문 + 'WHERE 1=1' 을 추가하여 뒤에 붙는 조건을 동적으로 처리한다는 점 입니다.
WHERE 1=1 이 없다면 처음 시작하는 조건문인지를 확인하여 처음 시작하는 조건문은 앞에 AND 를 사용하지 않아야 하는데, 이 부분을 코드로 구현하기가 힘들 것 입니다. 아래와 같은 방법을 사용하면 간단하게 구현 할 수 있습니다.
Dim strSQL As String
Dim strWhere As String
Const ConSQL = "SELECT 거래일 FROM 출입고내역 WHERE 1=1 " '여기서 기본 구문을 선언합니다. 이유는 날짜 와 구분 조건 중에 값이 없으면 그 부분은 필터에서 빠져야 하기 때문입니다. WHERE 1=1 은 쿼리를 동적으로 구현하기 위한 꼼수입니다. 이 뒤에는 And ... 로 계속 동적으로 조건을 붙일 수 있기 때문입니다.
'1. 날짜에 값이 있을 때 조회조건에 추가 (값이 없는 경우 조회조건에 추가시키지 않는다.)
If Nz(Me.txt시작일, "") <> "" Then
If Nz(Me.Txt종료일, "") <> "" Then
strWhere = " AND [거래일] >= #" & Me.txt시작일 & "# And [거래일] <= #" & Me.Txt종료일 & "#"
Else
'MsgBox "종료일을 입력하세요."
'exit sub
End If
Else
'msgBox "시작일을 입력하세요
'Exit Sub
End If
'2. 전표구분 관련 조회조건에 추가( 이 역시 전표구분에 값이 없으면 조회조건에 추가 자체를 하지 않습니다.)
If Nz(Cmb전표구분, "") <> "" Then
strWhere = strWhere & " AND 전표구분 = '" & Me.Cmb전표구분 & "'"
Else
'MsgBox "전표구분 을 입력하세요."
'exit sub
End If
'3. 정의한 조회 조건 구문 생성
strSQL = ConSQL & " " & strWhere
DoCmd.ApplyFilter strSQL