레코드 집합 개체(ADO)

기본 테이블의 전체 레코드 집합 또는 실행된 명령의 결과를 나타냅니다. 언제든지 Recordset 개체는 집합 내의 단일 레코드만 현재 레코드로 참조합니다.

설명

레코드 집합 개체를 사용하여 공급자의 데이터를 조작합니다. ADO를 사용하는 경우 거의 전적으로 레코드 집합 개체를 사용하여 데이터를 조작합니다. 모든 Recordset 개체는 레코드(행) 및 필드(열)로 구성됩니다. 공급자에서 지원하는 기능에 따라 일부 Recordset 메서드 또는 속성을 사용할 수 없습니다.

ADODB. Recordset은 Recordset 개체를 만드는 데 사용해야 하는 ProgID입니다. 오래된 된 사용 된 사용 하는 기존 애플리케이션입니다. 레코드 설정 ProgID는 다시 컴파일하지 않고 계속 작동하지만 새 개발은 ADODB를 참조해야 합니다. 레코드 집합.

ADO에는 다음과 같은 4가지 커서 유형이 정의되어 있습니다.

  • 동적 커서 다른 사용자의 추가, 변경 내용 및 삭제를 볼 수 있습니다. 은 책갈피에 의존하지 않는 레코드를 통해 모든 유형의 이동을 허용합니다. 공급자가 지원하는 경우 및 은 책갈피를 허용합니다.

  • 키 집합 커서 다른 사용자가 추가하는 레코드를 볼 수 없도록 하고 다른 사용자가 삭제하는 레코드에 대한 액세스를 차단한다는 점을 제외하고 동적 커서처럼 동작합니다. 다른 사용자의 데이터 변경 내용은 계속 표시됩니다. 항상 책갈피를 지원하므로 레코드집 을 통해 모든 유형의 이동을 허용합니다.

  • 정적 커서 데이터를 찾거나 보고서를 생성하는 데 사용할 레코드 집합의 정적 복사본을 제공합니다. 은 항상 책갈피를 허용하므로 레코드집 을 통해 모든 유형의 이동을 허용합니다. 다른 사용자의 추가, 변경 또는 삭제는 표시되지 않습니다. 클라이언트 쪽 Recordset 개체를 열 때 허용되는 유일한 커서 유형입니다.

  • 전달 전용 커서 레코드 설정 을 통해서만 앞으로 스크롤할 수 있습니다. 다른 사용자의 추가, 변경 또는 삭제는 표시되지 않습니다. 이렇게 하면 레코드를 한 번만 통과해야 하는 상황에서 성능이 향상됩니다.

레코드 집합을 열기 전에 CursorType 속성을 설정하여 커서 유형을 선택하거나 Open 메서드를 사용하여 CursorType 인수를 전달합니다. 일부 공급자는 모든 커서 유형을 지원하지 않습니다. 공급자에 대한 설명서를 확인합니다. 커서 유형을 지정하지 않으면 ADO는 기본적으로 정방향 전용 커서를 엽니다.

CursorLocation 속성을 adUseClient로 설정하여 레코드 집합을 열면 반환된 Recordset 개체에서 Field 개체의 UnderlyingValue 속성을 사용할 수 없습니다. 일부 공급자(예: Microsoft SQL Server 함께 OLE DB 위한 Microsoft ODBC Provider)와 함께 사용하는 경우 Open 메서드를 사용하여 연결 문자열을 전달하여 이전에 정의된 Connection 개체와 독립적으로 Recordset 개체를 만들 수 있습니다. ADO는 여전히 Connection 개체를 만들지만 해당 개체를 개체 변수에 할당하지 않습니다. 그러나 동일한 연결을 통해 여러 Recordset 개체를 여는 경우 Connection 개체를 명시적으로 만들고 열어야 합니다. 그러면 Connection 개체가 개체 변수에 할당됩니다. Recordset 개체를 열 때 이 개체 변수를 사용하지 않는 경우 ADO는 동일한 연결 문자열을 전달하는 경우에도 새로운 각 Recordset 에 대해 새 Connection 개체를 만듭니다.

필요한 만큼 레코드 설정 개체를 만들 수 있습니다.

레코드 집합을 열면 현재 레코드가 첫 번째 레코드(있는 경우)에 배치되고 BOFEOF 속성이 False 로 설정됩니다. 레코드가 없는 경우 BOFEOF 속성 설정은 True 입니다.

MoveFirst, MoveLast, MoveNextMovePrevious 메서드를 사용할 수 있습니다. Move 메서드; 및 AbsolutePosition, AbsolutePageFilter 속성은 공급자가 관련 기능을 지원한다고 가정하여 현재 레코드의 위치를 변경합니다. 정방향 전용 Recordset 개체는 MoveNext 메서드만 지원합니다. Move 메서드를 사용하여 각 레코드를 방문하거나 레코드를 열거하는 경우 BOFEOF 속성을 사용하여 레코드의 시작 또는 끝 이상으로 이동했는지 확인할 수 있습니다.

Recordset 개체의 기능을 사용하려면 먼저 개체에서 Supports 메서드를 호출하여 기능이 지원되거나 사용 가능한지 확인해야 합니다. Supports 메서드가 false를 반환하는 경우 이 기능을 사용하면 안 됩니다. 예를 들어 가 True 를 반환하는 경우에만 MovePrevious 메서드를 사용할 수 Recordset.Supports(adMovePrevious) 있습니다. 그렇지 않으면 Recordset 개체가 닫혔을 수 있고 인스턴스에서 기능을 사용할 수 없게 렌더링되었기 때문에 오류가 발생합니다. 관심 있는 기능이 지원되지 않는 경우 지원에서 false도 반환합니다. 이 경우 Recordset 개체에서 해당 속성 또는 메서드를 호출하지 않아야 합니다.

레코드 설정 개체는 즉시 업데이트와 일괄 처리의 두 가지 업데이트 유형을 지원할 수 있습니다. 즉시 업데이트할 때 Update 메서드를 호출하면 데이터에 대한 모든 변경 내용이 기본 데이터 원본에 즉시 기록됩니다. AddNewUpdate 메서드를 통해 값 배열을 매개 변수로 전달하고 레코드의 여러 필드를 동시에 업데이트할 수도 있습니다.

공급자가 일괄 업데이트를 지원하는 경우 공급자 캐시 변경 내용을 둘 이상의 레코드로 변경한 다음 UpdateBatch 메서드를 사용하여 데이터베이스에 대한 단일 호출로 전송할 수 있습니다. 이는 AddNew, UpdateDelete 메서드를 사용하여 변경한 내용에 적용됩니다. UpdateBatch 메서드를 호출한 후에는 Status 속성을 사용하여 데이터 충돌을 확인하여 문제를 해결할 수 있습니다.

참고

Command 개체를 사용하지 않고 쿼리를 실행하려면 쿼리 문자열을 Recordset 개체의 Open 메서드에 전달합니다. 그러나 명령 텍스트를 유지하거나 다시 실행하거나 쿼리 매개 변수를 사용하려면 Command 개체가 필요합니다.

Mode 속성은 액세스 권한을 제어합니다.

Fields 컬렉션은 Recordset 개체의 기본 멤버입니다. 따라서 다음 두 코드 문은 동일합니다.

Debug.Print objRs.Fields.Item(0)  ' Both statements print   
Debug.Print objRs(0)              '  the Value of Item(0).  

레코드 집합 개체가 프로세스 간에 전달되면 행 집합 값만 마샬링되고 Recordset 개체의 속성은 무시됩니다. 경계를 해제하는 동안 행 집합은 새로 만든 레코드 집합 개체로 압축을 풉니다. 그러면 해당 속성도 기본값으로 설정됩니다.

Recordset 개체는 스크립팅에 안전합니다.

이 섹션에는 다음 항목이 포함되어 있습니다.

참고 항목

연결 개체(ADO)
Fields 컬렉션(ADO)
Properties 컬렉션(ADO)
부록 A: 공급자