적용 대상
ComboBox 개체 |
Form 개체 |
ListBox 개체 |
Report 개체 |
지정된 폼, 보고서, 목록 상자 컨트롤 또는 콤보 상자 컨트롤에 대해 레코드 원본를 나타내는 ADO Recordset 또는 DAO Recordset 개체를 반환하거나 설정합니다. 읽기/쓰기입니다.
expression.Recordset
식 필수 요소입니다. 적용 대상 목록에 있는 개체 중 하나를 반환하는 식입니다.
주의
Recordset 속성은 폼, 보고서, 목록 상자 컨트롤 또는 콤보 상자 컨트롤에서 찾는 데이터를 제공하는 recordset 개체를 반환합니다. 예를 들어 폼이 쿼리를 기반으로 하는 경우 Recordset 속성을 참조하는 것은 동일한 쿼리를 사용하여 Recordset 개체를 복제하는 것과 동일합니다. 그러나 RecordsetClone 속성을 사용하는 것과 달리 폼의 Recordset 속성에서 반환되는 레코드 집합에 현재 있는 레코드를 변경해도 폼의 현재 레코드가 설정됩니다.
VBA(Visual Basic for Applications) 코드를 사용하는 경우에만 이 속성을 사용할 수 있습니다.
Recordset 속성의 읽기/쓰기 동작은 레코드 집합 종류(ADO 또는 DAO)와 속성으로 식별된 레코드 집합에 포함된 데이터의 형식(Access 또는 SQL)에 따라 결정됩니다.
레코드 집합 종류 |
SQL 데이터 기반 |
Access 데이터 기반 |
ADO |
읽기/쓰기 |
읽기/쓰기 |
DAO |
해당 없음 |
읽기/쓰기 |
다음 예에서는 폼을 열고 레코드 집합을 연 다음 폼의 Recordset 속성을 새로 만든 Recordset 개체로 설정하여 폼을 레코드 집합에 바인딩합니다.
Global rstSuppliers As ADODB.RecordsetSub MakeRW()DoCmd.OpenForm "Suppliers"Set rstSuppliers = New ADODB.RecordsetrstSuppliers.CursorLocation = adUseClientrstSuppliers.Open "Select * From Suppliers", _CurrentProject.Connection, adOpenKeyset, adLockOptimisticSet Forms("Suppliers").Recordset = rstSuppliersEnd Sub
Recordset 속성을 사용합니다.
-
여러 폼을 공통 데이터 집합에 바인드합니다. 이렇게 하면 여러 폼을 동기화할 수 있습니다. 예를 들어,
Set Me.Recordset = Forms!Form1.Recordset
-
폼에서 직접 지원되지 않은 Recordset 개체가 있는 메서드를 사용합니다. 예를 들어 ADO Find 또는 DAO Find 메서드가 있는 Recordset 속성을 레코드를 찾기 위한 사용자 지정 대화 상자에서 사용할 수 있습니다.
-
여러 폼에 영향을 주는 일련의 편집에 대한 트랜잭션(롤백할 수 있는 트랜잭션)을 래핑합니다.
폼의 Recordset 속성을 변경하면 RecordSource, RecordsetType 및 RecordLocks 속성도 변경될 수 있습니다. 일부 데이터 관련 속성(예: Filter, FilterOn, OrderBy 및 OrderByOn 속성)도 재정의될 수 있습니다.
폼의 레코드 집합(예: Forms(0).Recordset.Requery) Requery 메서드를 호출하면 폼이 언바운드 상태가 될 수 있습니다. 레코드 집합에 바인딩된 폼의 데이터를 새로 고치려면 폼의 RecordSource 속성을 자신(Forms(0).RecordSource = Forms(0).RecordSource)으로 설정하세요.
폼이 레코드 집합에 바인딩되면 폼 필터 명령을 사용하는 경우 오류가 발생합니다.
예제
다음 예에서는 Recordset 속성을 사용하여 현재 폼에서 Recordset 개체의 새 복사본을 만든 다음 디버그 창에 필드 이름을 인쇄합니다.
Sub Print_Field_Names()
Dim rst As DAO.Recordset, intI As Integer Dim fld As Field Set rst = Me.Recordset For Each fld in rst.Fields ' Print field names. Debug.Print fld.Name Next End Sub
다음 예에서는 Recordset 속성 및 Recordset 개체를 사용하여 레코드 집합을 폼의 현재 레코드와 동기화합니다. 콤보 상자에서 회사 이름을 선택하면 FindFirst 메서드를 사용하여 해당 회사의 레코드를 찾으므로 찾은 레코드가 폼에 표시됩니다.
Sub SupplierID_AfterUpdate()
Dim rst As DAO.Recordset Dim strSearchName As String Set rst = Me.Recordset strSearchName = CStr(Me!SupplierID) rst.FindFirst "SupplierID = " & strSearchName If rst.NoMatch Then MsgBox "Record not found" End If rst.Close End Sub
다음 코드는 서로 다른 조건에서 Recordset 속성이 반환하는 레코드 집합 종류를 확인하는 데 도움이 됩니다.
Sub CheckRSType()
Dim rs as Object Set rs=Forms(0).Recordset If TypeOf rs Is DAO.Recordset Then MsgBox "DAO Recordset" ElseIf TypeOf rs is ADODB.Recordset Then MsgBox "ADO Recordset" End If End Sub