다음을 통해 공유


개체 필드

Field 개체는 일반적으로 데이터베이스 테이블의 열에 해당합니다. 그러나 필드는 장이라고 하는 다른 레코드셋에 대한 포인터를 나타낼 수도 있습니다. 장 칼럼과 같은 예외는 이 가이드의 후반부에서 다룹니다.

Field 개체의 Value 속성을 사용하여 현재 레코드에 대한 데이터를 설정하거나 반환합니다. 공급자가 노출하는 기능에 따라 Field 개체의 일부 컬렉션, 메서드 또는 속성을 사용할 수 없습니다.

Field 개체의 컬렉션, 메서드 및 속성을 사용하여 다음을 수행할 수 있습니다.

  • Name 속성을 사용하여 필드의 이름을 반환합니다.

  • Value 속성을 사용하여 필드의 데이터를 보거나 변경합니다. ValueField 개체의 기본 속성입니다.

  • 형식, PrecisionNumericScale 속성을 사용하여 필드의 기본 특성을 반환합니다.

  • DefinedSize 속성을 사용하여 선언된 필드 크기를 반환합니다.

  • ActualSize 속성을 사용하여 지정된 필드에 있는 데이터의 실제 크기를 반환합니다.

  • Attributes 속성 및 Properties 컬렉션을 사용하여 지정된 필드에 지원되는 기능 유형을 결정합니다.

  • 긴 이진 또는 긴 문자 데이터가 포함된 필드의 값을 조작하려면 AppendChunkGetChunk 메서드를 사용하십시오.

공급자가 일괄 업데이트를 지원하는 경우 OriginalValueUnderlyingValue 속성을 사용하여 일괄 업데이트 중에 필드 값의 불일치를 해결합니다.

필드 설명

다음 항목에서는 Field 개체 자체를 설명하는 정보, 즉 필드에 대한 메타데이터를 나타내는 Field 개체의 속성에 대해 설명합니다. 이 정보를 사용하여 Recordset스키마에 대해 자세히 확인할 수 있습니다. 이러한 속성에는 Type, DefinedSizeActualSize, NameNumericScalePrecision포함됩니다.

데이터 형식 검색

Type 속성은 필드의 데이터 형식을 나타냅니다. ADO에서 지원하는 데이터 형식의 열거 상수는 ADO 프로그래머 참조, DataTypeEnum에 설명되어 있습니다.

adNumeric 부동 소수점 숫자 형식의 경우 자세한 정보를 얻을 수 있습니다. NumericScale 속성은 필드값을 나타내는 데 사용되는 소수점 오른쪽의 자릿수를 나타냅니다. Precision 속성은 필드값을 나타내는 데 사용되는 최대 자릿수를 지정합니다.

필드 크기 결정

DefinedSize 속성을 사용하여 Field 개체의 데이터 용량을 확인합니다.

ActualSize 속성을 사용하여 Field 개체 값의 실제 길이를 반환합니다. 모든 필드에 대해 ActualSize 속성은 읽기 전용입니다. ADO에서 Field 개체 값의 길이를 확인할 수 없는 경우 ActualSize 속성은 adUnknown 반환합니다.

DefinedSizeActualSize 속성은 용도가 다릅니다. 예를 들어 선언된 형식의 adVarChar 및 단일 문자를 포함하는 DefinedSize 속성 값이 50인 Field 개체를 생각해 보세요. 반환하는 ActualSize 속성 값은 단일 문자의 길이(바이트)입니다.

필드 내용 확인

데이터 원본에서 열의 식별자는 필드Name 속성으로 표시됩니다. Field 개체의 Value 속성은 필드의 실제 데이터 콘텐츠를 반환하거나 설정합니다. 기본 속성입니다.

필드의 데이터를 변경하려면 Value 속성을 올바른 형식의 새 값과 동일하게 설정합니다. 커서 유형은 필드의 내용을 변경하려면 업데이트를 지원해야 합니다. 일괄 처리 모드에서는 데이터베이스 유효성 검사가 수행되지 않으므로 이러한 경우 UpdateBatch 호출할 때 오류를 확인해야 합니다. 또한 일부 공급자는 ADO Field 개체의 UnderlyingValueOriginalValue 속성을 지원하여 일괄 업데이트를 수행하려고 할 때 충돌을 해결하는 데 도움을 줍니다. 이러한 충돌을 해결하는 방법에 대한 자세한 내용은 데이터 편집 참조하세요.

메모

레코드 집합 필드 값은 새 필드를 레코드 집합 추가할 때 설정할 수 없습니다. 대신, 닫힌 레코드 집합에 새 필드를 추가할 수 있습니다. 그런 다음 레코드 집합 열어야 하며, 그런 다음에만 이러한 필드값을 할당할 수 있습니다.

추가 필드 정보 가져오기

ADO 개체에는 기본 제공 및 동적 속성의 두 가지 유형이 있습니다. 지금까지 Field 개체의 기본 제공 속성만 설명했습니다.

기본 제공 속성은 ADO에서 구현되고 MyObject.Property 구문을 사용하여 새 개체에서 즉시 사용할 수 있는 속성입니다. 개체의 프로퍼티 컬렉션에는 프로퍼티 개체로 나타나지 않습니다.

동적 속성은 기본 데이터 공급자에 의해 정의되며 적절한 ADO 개체에 대한 Properties 컬렉션에 표시됩니다. 예를 들어 공급자와 관련된 속성은 Recordset 개체가 트랜잭션 또는 업데이트를 지원하는지 여부를 나타낼 수 있습니다. 이러한 추가 속성은 해당 Recordset 개체의 Properties 컬렉션에 Property 개체로 표시됩니다. 동적 속성은 구문 MyObject.Properties(0) 또는 MyObject.Properties("Name")사용하여 컬렉션을 통해서만 참조할 수 있습니다.

어떤 종류의 속성도 삭제할 수 없습니다.

동적 Property 개체에는 네 가지 기본 제공 속성이 있습니다.

  • Name 속성은 속성을 식별하는 문자열입니다.

  • Type 속성은 속성 데이터 형식을 지정하는 정수입니다.

  • Value 속성은 속성 설정을 포함하는 변형입니다. ValueProperty 개체의 기본 속성입니다.

  • Attributes 속성은 공급자와 관련된 속성의 특성을 나타내는 Long 값입니다.

Field 개체의 Properties 컬렉션에는 필드에 대한 추가 메타데이터가 포함되어 있습니다. 이 컬렉션의 내용은 공급자에 따라 다릅니다. 다음 코드 예제에서는 이 섹션의 시작 부분에 소개된 샘플 RecordsetProperties 컬렉션을 검사합니다. 먼저 컬렉션의 내용을 살펴봅니다. 이 코드는 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 메서드를 사용하여 전체 값이 아닌 일부에서 긴 값을 조작할 수 있습니다.

Field 개체의 Attributes 속성에서 adFldLong 비트가 True설정된 경우 해당 필드에 AppendChunk 메서드를 사용할 수 있습니다.

Field 개체의 첫 번째 AppendChunk 호출은 필드에 데이터를 쓰고 기존 데이터를 덮어씁니다. 후속 AppendChunk 호출은 기존 데이터에 추가됩니다. 한 필드에 데이터를 추가한 다음 현재 레코드에서 다른 필드의 값을 설정하거나 읽는 경우 ADO는 첫 번째 필드에 데이터를 추가한 것으로 가정합니다. 첫 번째 필드에서 AppendChunk 메서드를 다시 호출하는 경우 ADO는 호출을 새 AppendChunk 작업으로 해석하고 기존 데이터를 덮어씁니다. 첫 번째 Recordset 개체의 복제본이 아닌 다른 Recordset 개체의 필드에 액세스해도 AppendChunk 작업이 방해받지 않습니다.

Field 개체에서 GetChunk 메서드를 사용하여 긴 이진 또는 문자 데이터의 일부 또는 전체를 검색합니다. 시스템 메모리가 제한된 경우 GetChunk 메서드를 사용하여 전체 값이 아닌 일부에서 긴 값을 조작할 수 있습니다.

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 메서드 예제를 참조하세요.