Recordset 속성

적용 대상

ComboBox 개체

Form 개체

ListBox 개체

Report 개체

지정된 폼, 보고서, 목록 상자 컨트롤 또는 콤보 상자 컨트롤에 대해 레코드 원본를 나타내는 ADO Recordset 또는 DAO Recordset 개체를 반환하거나 설정합니다. 읽기/쓰기입니다.

expression.Recordset

expression은 필수입니다. 적용 대상 목록에서 개체 중 하나를 반환하는 식입니다.

주의

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, RecordsetTypeRecordLocks 속성도 변경될 수 있습니다. 일부 데이터 관련 속성(예: Filter, FilterOn, OrderByOrderByOn 속성)도 재정의될 수 있습니다.

폼의 레코드 집합(예: 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
Office 기술 확장
교육 살펴보기
새로운 기능 우선 가져오기
Office Insider 참여

이 정보가 유용한가요?

의견 주셔서 감사합니다!

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×