필드 개체
각 Field 개체는 일반적으로 데이터베이스 테이블의 열에 해당합니다. 그러나 필드는 챕터이라고 하는 다른 레코드 집합에 대한 포인터를 나타낼 수도 있습니다. 챕터 열과 같은 예외는 이 가이드의 뒷부분에서 다룹니다.
Field 개체의 Value 속성을 사용하여 현재 레코드에 대한 데이터를 설정하거나 반환합니다. 공급자가 노출하는 기능에 따라 Field 개체의 일부 컬렉션, 메서드 또는 속성을 사용할 수 없습니다.
Field 개체의 컬렉션, 메서드, 속성을 사용하여 다음을 수행할 수 있습니다.
Name 속성을 사용하여 필드의 이름을 반환합니다.
Value 속성을 사용하여 필드의 데이터를 보거나 변경합니다. Value는 Field 개체의 기본 속성입니다.
Type, Precision, NumericScale 속성을 사용하여 필드의 기본 특성을 반환합니다.
DefinedSize 속성을 사용하여 선언된 필드 크기를 반환합니다.
ActualSize 속성을 사용하여 지정된 필드에 있는 데이터의 실제 크기를 반환합니다.
Attributes 속성 및 Properties 컬렉션을 사용하여 지정된 필드에 지원되는 기능 유형을 결정합니다.
AppendChunk 및 GetChunk 메서드를 사용하여 긴 이진 또는 긴 문자 데이터를 포함하는 필드의 값을 조작합니다.
공급자가 일괄 업데이트를 지원하는 경우 OriginalValue 및 UnderlyingValue 속성을 사용하여 일괄 업데이트하는 동안 필드 값의 불일치를 해결합니다.
테이블 설명
다음 항목에서는 Field 개체 자체를 설명하는 정보, 즉 필드에 대한 메타데이터를 나타내는 Field 개체의 속성에 대해 설명합니다. 이 정보는 레코드 집합의 스키마에 대해 자세히 확인하는 데 사용할 수 있습니다. 이러한 속성에는 Type, DefinedSize, ActualSize, Name, NumericScale, Precision이 포함됩니다.
데이터 형식 검색
Type 속성은 필드의 데이터 형식을 나타냅니다. ADO에서 지원하는 데이터 형식 열거 상수는 ADO 프로그래머 참조의 DataTypeEnum에서 설명합니다.
adNumeric과 같은 부동 소수점 숫자 형식의 경우 자세한 정보를 얻을 수 있습니다. NumericScale 속성은 필드 값을 나타내는 데 사용할 소수점 오른쪽 자릿수를 나타냅니다. Precision 속성은 필드 값을 나타내는 데 사용되는 최대 자릿수를 지정합니다.
필드 크기 결정
DefinedSize 속성을 사용하여 Field 개체의 데이터 용량을 확인합니다.
ActualSize 속성을 사용하여 Field 개체 값의 실제 길이를 반환합니다. 모든 필드에 대해 ActualSize 속성은 읽기 전용입니다. ADO에서 Field 개체 값의 길이를 확인할 수 없는 경우 ActualSize 속성은 adUnknown을 반환합니다.
DefinedSize 및 ActualSize 속성은 용도가 다릅니다. 예를 들어 선언된 형식이 adVarChar이고 DefinedSize 속성 값이 50이고 단일 문자가 포함된 Field 개체를 생각해 보세요. 반환하는 ActualSize 속성 값은 단일 문자의 길이(바이트)입니다.
필드 내용 확인
데이터 원본에서 열의 식별자는 필드의 Name 속성으로 표시됩니다. Field 개체의 Value 속성은 필드의 실제 데이터 콘텐츠를 반환하거나 설정합니다. 이것이 기본 속성입니다.
필드의 데이터를 변경하려면 Value 속성을 올바른 형식의 새 값으로 설정합니다. 필드의 내용을 변경하려면 커서 유형이 업데이트를 지원해야 합니다. 데이터베이스 유효성 검사는 일괄 처리 모드에서 수행되지 않으므로 이러한 경우 UpdateBatch를 호출할 때 오류를 확인해야 합니다. 또한 일부 공급자는 일괄 업데이트를 수행하려고 할 때 발생하는 충돌을 해결하는 데 도움이 되도록 ADO Field 개체의 UnderlyingValue 및 OriginalValue 속성을 지원합니다. 이러한 충돌을 해결하는 방법에 대한 자세한 내용은 데이터 편집을 참조하세요.
참고 항목
레코드 집합에 새 필드를 추가할 때 레코드 집합 필드 값을 설정할 수 없습니다. 대신 닫힌 레코드 집합에 새 필드를 추가할 수 있습니다. 그런 다음, 레코드 집합을 열어야 하며, 그런 다음에만 이러한 필드에 값을 할당할 수 있습니다.
추가 필드 정보 보기
ADO 개체에는 기본 제공 및 동적의 두 가지 속성 유형이 있습니다. 지금까지는 Field 개체의 기본 제공 속성만 설명했습니다.
기본 제공 속성은 ADO에서 구현되는 속성으로, MyObject.Property
구문을 사용하여 새 개체에서 즉시 사용할 수 있습니다. 개체의 Properties 컬렉션에서 Property 개체로 표시되지 않습니다.
동적 속성은 기본 데이터 공급자에 의해 정의되며 적절한 ADO 개체에 대한 Properties 컬렉션에 표시됩니다. 예를 들어 공급자와 관련된 속성은 Recordset 개체가 트랜잭션 또는 업데이트를 지원하는지 여부를 나타낼 수 있습니다. 이러한 추가 속성은 해당 Recordset 개체의 Properties 컬렉션에 Property 개체로 표시됩니다. 동적 속성은 MyObject.Properties(0)
또는 MyObject.Properties("Name")
구문을 사용하여 컬렉션을 통해서만 참조할 수 있습니다.
어떤 종류의 속성도 삭제할 수 없습니다.
동적 Property 개체에는 다음과 같은 네 가지 기본 제공 속성이 있습니다.
Name 속성은 속성을 식별하는 문자열입니다.
Type 속성은 속성 데이터 형식을 지정하는 정수입니다.
Value 속성은 속성 설정이 포함된 변형입니다. Value는 Property 개체의 기본 속성입니다.
Attributes 속성은 공급자와 관련된 속성의 특성을 나타내는 Long 값입니다.
Field 개체의 Properties 컬렉션에는 필드에 대한 추가 메타데이터가 포함됩니다. 이 컬렉션의 내용은 공급자에 따라 다릅니다. 다음 코드 예제에서는 이 섹션의 시작 부분에 소개된 샘플 레코드 집합의 Properties 컬렉션을 검사합니다. 먼저 컬렉션의 내용을 살펴봅니다. 이 코드는 OLE DB Provider for SQL Server를 사용하므로 Properties 컬렉션에는 해당 공급자와 관련된 정보가 포함됩니다.
'BeginFieldProps
Dim objProp As ADODB.Property
For intLoop = 0 To (objFields.Count - 1)
Debug.Print objFields.Item(intLoop).Name
For Each objProp In objFields(intLoop).Properties
Debug.Print vbTab & objProp.Name & " = " & objProp.Value
Next objProp
Next intLoop
'EndFieldProps
이진 데이터 처리
Field 개체에서 AppendChunk 메서드를 사용하여 긴 이진 또는 문자 데이터로 채웁니다. 시스템 메모리가 제한된 경우 AppendChunk 메서드를 사용하여 전체 값이 아닌 일부의 long 값을 조작할 수 있습니다.
Field 개체의 Attributes 속성에 있는 adFldLong 비트가 True로 설정된 경우 해당 필드에 AppendChunk 메서드를 사용할 수 있습니다.
Field 개체의 첫 번째 AppendChunk 호출은 기존 데이터를 덮어쓰는 필드에 데이터를 씁니다. 후속 AppendChunk 호출은 기존 데이터에 추가됩니다. 한 필드에 데이터를 추가한 다음, 현재 레코드에서 다른 필드의 값을 설정하거나 읽는 경우 ADO는 첫 번째 필드에 데이터를 추가한 것으로 가정합니다. 첫 번째 필드에서 AppendChunk 메서드를 다시 호출하는 경우 ADO는 호출을 새 AppendChunk 작업으로 해석하고 기존 데이터를 덮어씁니다. 첫 번째 Recordset 개체의 복제본이 아닌 다른 Recordset 개체의 필드에 액세스해도 AppendChunk 작업이 중단되지 않습니다.
Field 개체에서 GetChunk 메서드를 사용하여 long 이진 또는 문자 데이터의 일부 또는 전체를 검색합니다. 시스템 메모리가 제한된 경우 GetChunk 메서드를 사용하여 전체 값이 아닌 일부의 long 값을 조작할 수 있습니다.
GetChunk 호출이 반환하는 데이터는 변수에 할당됩니다. Size가 나머지 데이터보다 크면 GetChunk 메서드는 빈 공백을 포함하여 패딩 변수 없이 나머지 데이터만 반환합니다. 필드가 비어 있으면 GetChunk 메서드는 null 값을 반환합니다.
각각의 이후 GetChunk 호출은 이전 GetChunk 호출이 중단된 위치에서 시작하는 데이터를 검색합니다. 그러나 한 필드에서 데이터를 검색한 다음, 현재 레코드에서 다른 필드의 값을 설정하거나 읽는 경우 ADO는 첫 번째 필드에서 데이터 검색을 완료한 것으로 가정합니다. 첫 번째 필드에서 GetChunk 메서드를 다시 호출하는 경우 ADO는 호출을 새 GetChunk 작업으로 해석하고 데이터의 시작 부분에서 읽기를 시작합니다. 첫 번째 Recordset 개체의 복제본이 아닌 다른 Recordset 개체의 필드에 액세스해도 GetChunk 작업이 중단되지 않습니다.
Field 개체의 Attributes 속성에 있는 adFldLong 비트가 True로 설정된 경우 해당 필드에 GetChunk 메서드를 사용할 수 있습니다.
Field 개체에서 GetChunk 또는 AppendChunk 메서드를 사용할 때 현재 레코드가 없으면 오류 3021(현재 레코드 없음)이 발생합니다.
이러한 메서드를 사용하여 이진 데이터를 조작하는 예제는 ADO 프로그래머 참조의 AppendChunk 메서드 및 GetChunk 메서드 예제를 참조하세요.