Recordset 개체(ADO)
기본 테이블의 전체 레코드 집합 또는 실행된 명령의 결과를 나타냅니다. 언제든지 Recordset 개체는 집합 내의 단일 레코드만 현재 레코드로 참조합니다.
발언
Recordset 개체를 사용하여 공급자의 데이터를 조작합니다. ADO를 사용하는 경우 Recordset 개체를 사용하여 거의 전적으로 데이터를 조작합니다. 모든 Recordset 개체는 레코드(행) 및 필드(열)로 구성됩니다. 공급자가 지원하는 기능에 따라 일부 Recordset 메서드 또는 속성을 사용할 수 없습니다.
ADODB. Recordset은 Recordset 개체를 만드는 데 사용해야 하는 ProgID입니다. 오래된 ADOR를 참조하는 기존 애플리케이션입니다. Recordset ProgID는 다시 컴파일하지 않고 계속 작동하지만 새 개발은 ADODB를 참조해야 합니다. 레코드 집합입니다.
ADO에는 다음과 같은 네 가지 커서 형식이 정의되어 있습니다.
동적 커서 다른 사용자의 추가, 변경 내용 및 삭제를 볼 수 있습니다. 는 책갈피를 사용하지 않는 레코드 집합 통해 모든 유형의 이동을 허용합니다. 공급자가 지원하는 경우 책갈피를 허용합니다.
키 집합 커서 다른 사용자가 추가하는 레코드를 볼 수 없으며 다른 사용자가 삭제하는 레코드에 대한 액세스를 차단한다는 점을 제외하고 동적 커서처럼 동작합니다. 다른 사용자의 데이터 변경 내용은 계속 표시됩니다. 항상 책갈피를 지원하므로 Recordset통해 모든 유형의 이동을 허용합니다.
정적 커서 데이터를 찾거나 보고서를 생성하는 데 사용할 레코드 집합의 정적 복사본을 제공합니다. 항상 책갈피를 허용하므로 Recordset통해 모든 유형의 이동을 허용합니다. 다른 사용자의 추가, 변경 또는 삭제는 표시되지 않습니다. 클라이언트 쪽 Recordset 개체를 열 때 허용되는 유일한 커서 유형입니다.
전달 전용 커서레코드 집합스크롤할 수 있습니다. 다른 사용자의 추가, 변경 또는 삭제는 표시되지 않습니다. 이렇게 하면 Recordset한 번만 통과해야 하는 상황에서 성능이 향상됩니다.
Recordset 열기 전에 CursorType 속성을 설정하여 커서 유형을 선택하거나 Open 메서드를 사용하여 CursorType 인수를 전달합니다. 일부 공급자는 모든 커서 형식을 지원하지 않습니다. 공급자에 대한 설명서를 확인합니다. 커서 형식을 지정하지 않으면 ADO는 기본적으로 정방향 전용 커서를 엽니다.
CursorLocation 속성을 adUseClient 설정하여 Recordset열면 반환된 Recordset 개체에서 Field 개체의 UnderlyingValue 속성을 사용할 수 없습니다. 일부 공급자(예: Microsoft SQL Server와 함께 Microsoft ODBC Provider for OLE DB)와 함께 사용하는 경우 Open 메서드를 사용하여 연결 문자열을 전달하여 이전에 정의된 Connection 개체와 독립적으로 Recordset 개체를 만들 수 있습니다. ADO는 여전히 Connection 개체를 만들지만 해당 개체를 개체 변수에 할당하지는 않습니다. 그러나 동일한 연결을 통해 여러 Recordset 개체를 여는 경우 Connection 개체를 명시적으로 만들고 열어야 합니다. 그러면 Connection 개체가 개체 변수에 할당됩니다. Recordset 개체를 열 때 이 개체 변수를 사용하지 않으면 ADO는 동일한 연결 문자열을 전달하더라도 새 Recordset각각에 대해 새 Connection 개체를 만듭니다.
필요에 따라 Recordset 개체를 만들 수 있습니다.
레코드 집합열면 현재 레코드가 첫 번째 레코드(있는 경우)에 배치되고 BOF 및 EOF 속성이 false 설정됩니다. 레코드가 없으면 BOF 및 EOF 속성 설정은 true .
MoveFirst , MoveLast, MoveNext및 movePrevious 메서드를사용할 수 있습니다. Move 메서드; 및 AbsolutePosition, AbsolutePage및 필터 속성을 공급자가 관련 기능을 지원합니다. 정방향 전용 Recordset 개체는 MoveNext 메서드만 지원합니다. Move 메서드를 사용하여 각 레코드를 방문하거나 레코드 집합열거하는 경우 BOF 사용하고 EOF 속성을Recordset시작 또는 끝 이상으로 이동했는지 확인할 수 있습니다.
Recordset 개체의 기능을 사용하기 전에 개체에서 Supports 메서드를 호출하여 기능이 지원되는지 또는 사용할 수 있는지 확인해야 합니다.
Supports 메서드가 false를 반환하는 경우 이 기능을 사용하면 안 됩니다. 예를 들어 Recordset.Supports(adMovePrevious)
true 반환하는 경우에만 MovePrevious 메서드를 사용할 수 있습니다. 그렇지 않으면 Recordset 개체가 닫혔을 수 있고 인스턴스에서 렌더링된 기능을 사용할 수 없으므로 오류가 발생합니다. 관심 있는 기능이 지원되지 않는 경우 지원 false도 반환합니다. 이 경우 Recordset 개체에서 해당 속성 또는 메서드를 호출하지 않아야 합니다.
Recordset 개체는 즉시 및 일괄 처리의 두 가지 유형의 업데이트를 지원할 수 있습니다. 즉시 업데이트할 때 Update 메서드를 호출하면 데이터에 대한 모든 변경 내용이 기본 데이터 원본에 즉시 기록됩니다. 또한 AddNew 및 Update 메서드를 사용하여 값 배열을 매개 변수로 전달하고 레코드의 여러 필드를 동시에 업데이트할 수 있습니다.
공급자가 일괄 업데이트를 지원하는 경우 공급자 캐시 변경 내용을 둘 이상의 레코드로 변경한 다음 UpdateBatch 메서드를 사용하여 데이터베이스에 단일 호출로 전송할 수 있습니다. 이는 AddNew, 업데이트및 Delete 메서드를 사용하여 변경한 내용에 적용됩니다. UpdateBatch 메서드를 호출한 후 Status 속성을 사용하여 데이터 충돌을 확인할 수 있습니다.
메모
Command 개체를 사용하지 않고 쿼리를 실행하려면 Recordset 개체의 Open 메서드에 쿼리 문자열을 전달합니다. 그러나 명령 텍스트를 유지하거나 다시 실행하거나 쿼리 매개 변수를 사용하려는 경우 Command 개체가 필요합니다.
모드 속성은 액세스 권한을 제어합니다.
Fields 컬렉션은 Recordset 개체의 기본 멤버입니다. 따라서 다음 두 코드 문은 동일합니다.
Debug.Print objRs.Fields.Item(0) ' Both statements print
Debug.Print objRs(0) ' the Value of Item(0).
Recordset 개체가 프로세스 간에 전달되면 행 집합 값만 마샬링되고 Recordset 개체의 속성은 무시됩니다. 경계를 해제하는 동안 행 집합 새로 만든 Recordset 개체로 압축을 풀고 해당 속성을 기본값으로 설정합니다.
Recordset 개체는 스크립팅에 안전합니다.
이 섹션에는 다음 항목이 포함되어 있습니다.
참고 항목
ADO(Connection Object)
ADO(Fields 컬렉션)
ADO(속성 컬렉션)
부록 A: 공급자