본문 바로가기

Server Story..../Windows Server

VB 에서 레코드셋 필터 사용방법

 

이 속성은 Recordset의 데이터에 사용할 필터를 지정합니다. 라고 MSDN에는 이렇게 나왔데

무슨 말인지 이해가 않되서서 제 생각대로 적어 본것이

 

생성된 Recordset의 데이터를 가지고 새로 Recordset를 생성(필터)합니다.

이때 DataBase에서 가져오는 것이 아닌 처음에 생성된 Recordset을 가지고 만드는 것입니다. 

 

Option Explicit
Private Sub Command1_Click()    
    
Call ps_ADO_FilterRecord    
End Sub


Private Sub ps_ADO_FilterRecord()

     Dim ADO_CN As New ADODB.Connection
    
Dim ADO_RS As New ADODB.Recordset  

  

     ADO_CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
               & "Data Source=C:\NWIND.MDB;" _
               & "Persist Security Info=False"

 

     ADO_RS.Open "Orders", ADO_CN, adOpenKeyset, adLockOptimistic    

 

     Debug.Print "Filter 초기 Record Count : " & ADO_RS.RecordCount    

 

     '서울특별시 Filter를 합니다.
     ADO_RS.Filter = "ShipCity='서울특별시'"    

 

     Debug.Print "Filter 후 Record Count : " & ADO_RS.RecordCount

 

     'Filter된 RS를 초기 상태로 복원합니다.
     ADO_RS.Filter = adFilterNone    

 

     Debug.Print "Filter 복원 후 Record Count : " & ADO_RS.RecordCount    

 

     ADO_RS.Close
     ADO_CN.Close  

 

End Sub

 

Access에 있는 테이블엔 아래과 같이 23건의 레코드가 있습니다.

 

이것을 위 소스에서 실행을 시킨 후 직접 실행창에 나온 결과는 아래와 같습니다.

수하도시명 중 서울특별시 만 Filter를 한것이 2건이 나온것이죠.

그런후 복원을 하니 초기 23건의 Record Count가 된것입니다.

 

정리

한번 DataBase에 접속해서 생성된 RecordSet을 가지고 작업을 하므로

여러번 DataBase에 접속할 필요가 없습니다.

물론 DataBase가 로컬컴퓨터에 있다면 모르겠지만 여러명이 서버에 연결해서 사용을 한다면

필요할때마다 DB에 연결하지 않아도 되기에 저는 자주 이용하는 편입니다.