■ Contents
1.Filter속성
Recordset 오브젝트의Filter속성을 설정하면 지정한 조건을 채워주는 레코드만을 추출하는 것이 가능하다.해당되는 레코드가 발견되지 않았던 경우에는 Recordset 오브젝트의 RecordCount속성(레코드셋에 포함되는 레코드 수를 표현하는 속성)의 값이 0이 된다.
【서식】recordset.Filter = criteria
recordset:열려 있는 Recordset 오브젝트 criteria:추출 조건을 표현하는 문자 열식
추출 조건을 표현하는 문자 열식은 추출에 사용하는 필드와 비교 연산자 추출하는 값으로 구성되는 문자열 식이다.추출에 사용하는 필드의 데이터 형태에 의해 추출하는 값의 서식이 다르다.
■추출 조건의 서식
●텍스트 형태의 필드의 경우 추출하는 값을 Single Quation(')으로 묶어야 한다.
추출하는 값을 변수로 지정하는 경우에도 Single Quation이 필요하다.
(예)RS.Filter = "클래스 = 'TA'"
RS.Filter = "클래스 = ' " & Str& "'"
●수치형의 필드의 경우는 추출하는 값을 그대로 기술한다.
(예)RS.Filter = "점수> 80"
RS.Filter = "점수> " & Str
●날짜 시각형 필드의 경우 추출하는 값을 샾기호(#)으로 묶어야 한다.추출하는 값을 변수로 지정하는 경우도 샾기호가 필요하다.
(예)RS.Filter = "입학일 = #2004/04/01#"
RS.Filter = "입학일 = # " & Str& "#"
●LIKE 를 사용한 문장은 ListName Like '*mit*' 이다 . 패턴의 시작과 끝에 와일드 카드를 지정할 수 있다.또는 ListName Like 'Smit*' 이다. 패턴의 끝에만 사용 할 수도 있다.
2.레코드를 추출한다.
【사용 예】
Public Sub 추출() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim criteria As String
'접속 Set CN = CurrentProject.Connection
'레코드셋을 취득 Set RS = New ADODB.Recordset RS.Open "학생 명부", CN, adOpenKeyset, adLockOptimistic
'필터 criteria = "성명 Like '홍길동%'" RS.Filter = criteria
If RS.RecordCount = 0 Then MsgBox ("해당되는 레코드는 발견되지 않습니다") Else Do Until RS.EOF Debug.Print RS!학적 번호, RS!성명 RS.MoveNext Loop End If
'종료 RS.Close: Set RS = Nothing CN.Close: Set CN = Nothing End Sub
3.복수의 조건으로 레코드를 추출한다.
복수의 조건으로 레코드를 추출할 때에는 And 연산자
또는
Or 연산자를 이용한다.And 연산자는 지정한 모든 조건을 채워주는 레코드를 추출할 때에 사용. Or 연산자 는 지정한 모든 조건의 어느 것이나 1개를 채워주는 레코드를 추출할 때에 사용한다.
【사용 예】
Public Sub FilterExecute2() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim criteria As String
'접속 Set CN = CurrentProject.Connection
'레코드셋을 취득 Set RS = New ADODB.Recordset RS.Open "학생 명부", CN, adOpenKeyset, adLockOptimistic
'필터 criteria = "(입학 일 >= #2004/04/01#) And (입학 일<= #2004/04/31#)" RS.Filter = criteria
If RS.RecordCount = 0 Then MsgBox ("메세지") Else Do Until RS.EOF Debug.Print RS!학생명부, RS!점수, RS!성명 RS.MoveNext Loop End If
RS.Close: Set RS = Nothing CN.Close: Set CN = Nothing End Sub
4.필터를 해제한다
Recordset 오브젝트의 Filter속성을 설정하면 지정한 추출 조건을 채워주는 레코드만이 추출되고 추출되지 않았던 레코드에 액세스하는 것은 불가능하다.필터를 해제하고 모든 레코드에 액세스할 수 있게 할 때는 Filter속성에 adFilterNone 또는 길이 0의 문자 열("")을 대입한다.
【사용 예】
Public Sub FilterCancel() Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Dim criteria As String
'접속 Set CN = CurrentProject.Connection
'레코드셋을 취득 Set RS = New ADODB.Recordset RS.Open "학생 명부", CN, adOpenKeyset, adLockOptimistic
'필터 criteria = "(입학 일 >= #2004/04/01#) And (입학 일<= #2004/04/31#)" RS.Filter = criteria
If RS.RecordCount = 0 Then MsgBox ("메세지") Else Do Until RS.EOF Debug.Print RS!학생명부, RS!점수, RS!성명 RS.MoveNext Loop End If
Debug.Print
RS.Filter = adFilterNone Do Until RS.EOF Debug.Print RS!학생명부, RS!점수, RS!성명 RS.MoveNext Loop
RS.Close: Set RS = Nothing CN.Close: Set CN = Nothing End Sub |
RECENT COMMENT