ADO를 사용하여 레코드셋을 생성시에는 DB의 컨넥션을 사용한다. 그런데 변경되지 않은 고정된 값만 갇는 레코드셋이라면 실행할때마다 굳이 DB에 접근할 필요는 없다. 리소스만 낭비할 뿐이나. 이럴때사용할수 있는 방법이 가상 레코드셋이다.

아래는 DB에 접근하여 레코드셋을 생성한 후에 파일로 저장하고, 컨넥션과 레코드셋을 닫은 후에, 컨넥션 없이 이전의 저장된 파일로 레코드셋만을 생성한 예이다.

' ADO 사용 우선 ADO를 사용하여 DB 컨넥션을 만들고 레코드셋을 생성한다음, 그 레코드셋을 파일로 저장한 후
' 컨넥션과 레코드셋을 닫고, 파일로부터 레코드셋을 생성한 예로 컨넥션이 없어도 레코드셋 독작적으로 유지할수 있다.
' 변경되지 않는 레코드셋이라면 DB에 연결하여 접근하는 것보다, 생성시만 DB에 접근하여 파일을 생성하고
' 그 다음부터는 파일에 접근하므로서, DB 접근에 의한 리소스를 줄일수 있다.
Option Explicit

Private Sub Command1_Click() ' 컨넥션이 있는 레코드셋 생성
    Dim cn As Connection
    Dim rs As Recordset
   
    Set cn = New Connection
    Set rs = New Recordset
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\LJJ\바탕 화면\새 폴더\db2.mdb;Persist Security Info=False"
    cn.Open
    rs.Open "recfile", cn
    Debug.Print rs.ActiveConnection Is Nothing
    rs.Save
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
End Sub

Private Sub Command2_Click() ' 컨넥션이 없는 레코드셋 생성
    Dim rs As Recordset
    Set rs = New Recordset
   
    rs.Open "recfile"
    Debug.Print rs.ActiveConnection Is Nothing
    rs.Close
    Set rs = Nothing
End Sub

Command1은 DB의 컨넥션을 사용한 레코드셋이고
Command2는 DB의 컨넥션 없이 이전의 저장된 파일에서 레코드셋이다.

+ Recent posts