Freigeben über


Das Field-Objekt

Jedes Field-Objekt entspricht in der Regel einer Spalte in einer Datenbanktabelle. Ein Field- kann jedoch auch einen Zeiger auf ein anderes Recordset-anzeigen, das als Kapitel bezeichnet wird. Ausnahmen, z. B. Kapitelspalten, werden weiter unten in diesem Handbuch behandelt.

Verwenden Sie die -Value--Eigenschaft von -Field--Objekten, um Daten für den aktuellen Datensatz festzulegen oder zurückzugeben. Abhängig von der vom Anbieter verfügbar gemachten Funktionalität sind möglicherweise einige Auflistungen, Methoden oder Eigenschaften eines Field-Objekts nicht verfügbar.

Mit den Auflistungen, Methoden und Eigenschaften eines Field-Objekts können Sie folgende Aktionen ausführen:

  • Geben Sie den Namen eines Felds mithilfe der eigenschaft Name zurück.

  • Zeigen Sie die Daten im Feld mithilfe der Value-Eigenschaft an, oder ändern Sie sie. Value ist die Standardeigenschaft des Field-Objekts.

  • Geben Sie die grundlegenden Merkmale eines Felds mithilfe der Eigenschaften Type, Precisionund NumericScale- zurück.

  • Gibt die deklarierte Größe eines Felds mithilfe der eigenschaft DefinedSize zurück.

  • Gibt die tatsächliche Größe der Daten in einem bestimmten Feld mithilfe der ActualSize-Eigenschaft zurück.

  • Ermitteln Sie, welche Funktionalitätstypen für ein bestimmtes Feld unterstützt werden, indem Sie die Attributes-Eigenschaft und Properties-Auflistung verwenden.

  • Bearbeiten Sie die Werte von Feldern, die lange binäre oder lange Zeichendaten enthalten, mithilfe der methoden AppendChunk und GetChunk.

Beheben von Abweichungen in Feldwerten bei der Batchaktualisierung mithilfe der Eigenschaften OriginalValue- und UnderlyingValue-, wenn der Anbieter Batchaktualisierungen unterstützt.

Beschreiben eines Felds

In den folgenden Themen werden die Eigenschaften des Field-Objekts erläutert, das Informationen darstellt, die das Field-Objekt selbst beschreiben , d. h. Metadaten zum Feld. Diese Informationen können verwendet werden, um viel über das Schema des Recordset-zu bestimmen. Zu diesen Eigenschaften gehören Type, DefinedSize und ActualSize, Nameund NumericScale und Precision.

Ermitteln des Datentyps

Die eigenschaft Type gibt den Datentyp des Felds an. Die von ADO unterstützten Datentypkonstanten werden in DataTypeEnum- im ADO-Programmierreferenz-beschrieben.

Für numerische Gleitkommatypen wie adNumericerhalten Sie weitere Informationen. Die eigenschaft NumericScale gibt an, wie viele Stellen rechts neben dem Dezimalkomma verwendet werden, um Werte für das Fielddarzustellen. Die Precision-Eigenschaft gibt die maximale Anzahl von Ziffern an, die zum Darstellen von Werten für das Fieldverwendet werden.

Bestimmen der Feldgröße

Verwenden Sie die eigenschaft DefinedSize, um die Datenkapazität eines Field-Objekts zu bestimmen.

Verwenden Sie die ActualSize-Eigenschaft, um die tatsächliche Länge des Werts eines Field Objekts zurückzugeben. Für alle Felder ist die ActualSize-Eigenschaft schreibgeschützt. Wenn ADO die Länge des Werts des Field Objekts nicht bestimmen kann, gibt die ActualSize-eigenschaftadUnknownzurück.

Die DefinedSize und ActualSize Eigenschaften haben unterschiedliche Zwecke. Betrachten Sie beispielsweise ein Field-Objekt mit einem deklarierten Typ von adVarChar- und einem DefinedSize Eigenschaftswert von 50, der ein einzelnes Zeichen enthält. Der ActualSize Eigenschaftswert, der zurückgegeben wird, ist die Länge in Byte des einzelnen Zeichens.

Bestimmen von Feldinhalten

Der Bezeichner der Spalte aus der Datenquelle wird durch die eigenschaft Name des Fielddargestellt. Die Value-Eigenschaft des Field--Objekts gibt den tatsächlichen Dateninhalt des Felds zurück oder legt ihn fest. Dies ist die Standardeigenschaft.

Um die Daten in einem Feld zu ändern, legen Sie die Value-Eigenschaft auf einen neuen Wert des richtigen Typs fest. Der Cursortyp muss Aktualisierungen unterstützen, um den Inhalt eines Felds zu ändern. Die Datenbanküberprüfung erfolgt hier nicht im Batchmodus. Daher müssen Sie beim Aufrufen UpdateBatch- in einem solchen Fall nach Fehlern suchen. Einige Anbieter unterstützen auch die Eigenschaften UnderlyingValue und OriginalValue des ADO Field-Objekts, um Ihnen bei der Lösung von Konflikten zu helfen, wenn Sie Sammelaktualisierungen ausführen. Ausführliche Informationen zum Beheben solcher Konflikte finden Sie unter Bearbeiten von Daten.

Anmerkung

Datensatzfeld--Werte können nicht festgelegt werden, wenn neue Felder an einen Datensatzangefügt werden. Stattdessen können neue Felder an ein geschlossenes Recordset-angefügt werden. Anschließend muss das Recordset- geöffnet werden, und nur dann können diesen FieldsWerte zugewiesen werden.

Abrufen weiterer Feldinformationen

ADO-Objekte weisen zwei Typen von Eigenschaften auf: integrierte und dynamische Objekte. Bisher wurden nur die integrierten Eigenschaften des Field-Objekts behandelt.

Eingebaute Eigenschaften sind jene Eigenschaften, die in ADO implementiert sind und sofort für jedes neue Objekt verfügbar sind, wenn die MyObject.Property-Syntax verwendet wird. Sie werden nicht als Property -Objekte in der Properties -Auflistung eines Objekts angezeigt.

Dynamische Eigenschaften werden vom zugrunde liegenden Datenanbieter definiert und in der Properties-Auflistung für das entsprechende ADO-Objekt angezeigt. Eine für den Anbieter spezifische Eigenschaft kann beispielsweise angeben, ob ein Recordset-Objekt Transaktionen oder Aktualisierungen unterstützt. Diese zusätzlichen Eigenschaften werden als Property--Objekte in der Recordset--Objektaufstellung als Properties angezeigt. Dynamische Eigenschaften können nur über die Sammlung mithilfe der Syntax MyObject.Properties(0) oder MyObject.Properties("Name")referenziert werden.

Sie können keine der beiden Eigenschaftenarten löschen.

Ein dynamisches Property-Objekt verfügt über vier integrierte Eigenschaften:

  • Die eigenschaft Name ist eine Zeichenfolge, die die Eigenschaft identifiziert.

  • Die eigenschaft Type ist eine ganze Zahl, die den Eigenschaftendatentyp angibt.

  • Die Value-Eigenschaft ist eine Variante, die die Eigenschaftseinstellung enthält. Value ist die Standardeigenschaft für ein Property-Objekt.

  • Die Attributes-Eigenschaft ist ein Long-Wert, der für den Anbieter spezifische Merkmale der Eigenschaft angibt.

Die Properties-Auflistung für das Field-Objekt enthält zusätzliche Metadaten zum Feld. Der Inhalt dieser Sammlung variiert je nach Anbieter. Im folgenden Codebeispiel wird die Properties-Sammlung des Beispiel-Recordsets, das am Anfang dieses Abschnitts eingeführt wurde, untersucht. Zunächst wird der Inhalt der Sammlung untersucht. Dieser Code verwendet den OLE DB-Anbieter für SQL Server, sodass die Properties-Auflistung relevante Informationen für diesen Anbieter enthält.

'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  

Umgang mit Binären Daten

Verwenden Sie die AppendChunk Methode für ein Field-Objekt, um es mit langen Binär- oder Zeichendaten zu füllen. In Situationen, in denen der Systemspeicher begrenzt ist, können Sie die AppendChunk- Methode verwenden, um lange Werte in Teilen zu bearbeiten und nicht vollständig.

Wenn das adFldLong Bit in der eigenschaft Attributes eines Field-Objekts auf Truefestgelegt ist, können Sie die AppendChunk--Methode für dieses Feld verwenden.

Der erste AppendChunk-Aufruf für ein Field-Objekt schreibt Daten in das Feld und überschreibt alle vorhandenen Daten. Nachfolgende Aufrufe von AppendChunk fügen vorhandenen Daten hinzu. Wenn Sie Daten an ein Feld anfügen und dann den Wert eines anderen Felds im aktuellen Datensatz festlegen oder lesen, geht ADO davon aus, dass Sie mit dem Anfügen von Daten an das erste Feld fertig sind. Wenn Sie die AppendChunk- Methode für das erste Feld erneut aufrufen, interpretiert ADO den Aufruf als neue AppendChunk Vorgang und überschreibt die vorhandenen Daten. Der Zugriff auf Felder in anderen Recordset--Objekten, die keine Klone des ersten Recordset--Objekts sind, beeinträchtigt AppendChunk--Vorgänge nicht.

Verwenden Sie die GetChunk--Methode für ein Field-Objekt, um einen Teil oder alle seiner langen Binär- oder Zeichendaten abzurufen. In Situationen, in denen der Systemspeicher begrenzt ist, können Sie die GetChunk--Methode verwenden, um lange Werte in Teilen zu bearbeiten, anstatt in ihrer Gesamtheit.

Die Daten, die ein GetChunk-aufruf zurückgibt, wird Variablenzugewiesen. Wenn Size größer als die verbleibenden Daten ist, gibt die GetChunk--Methode nur die verbleibenden Daten zurück, ohne die -Variable mit Leerzeichen aufzufüllen. Wenn das Feld leer ist, gibt die GetChunk--Methode einen NULL-Wert zurück.

Bei jedem nachfolgenden GetChunk Aufruf werden Daten ab der Stelle abgerufen, an der der vorherige GetChunk Aufruf unterbrochen wurde. Wenn Sie jedoch Daten aus einem Feld abrufen und dann den Wert eines anderen Felds im aktuellen Datensatz festlegen oder lesen, geht ADO davon aus, dass Sie das Abrufen von Daten aus dem ersten Feld abgeschlossen haben. Wenn Sie die GetChunk--Methode für das erste Feld erneut aufrufen, interpretiert ADO den Aufruf als neuen GetChunk Vorgang und beginnt mit dem Lesen von Anfang der Daten. Der Zugriff auf Felder in anderen -Recordset--Objekten, die keine Klone des ersten -Recordset--Objekts sind, wird -GetChunk--Vorgänge nicht beeinträchtigen.

Wenn das adFldLong Bit in der eigenschaft Attributes eines Field-Objekts auf Truefestgelegt ist, können Sie die GetChunk-Methode für dieses Feld verwenden.

Wenn es keinen aktuellen Datensatz gibt, wenn Sie die GetChunk- oder AppendChunk- methode für ein Field-Objekt verwenden, tritt Fehler 3021 (kein aktueller Datensatz) auf.

Ein Beispiel für die Verwendung dieser Methoden zum Bearbeiten von Binärdaten finden Sie in den Beispielen AppendChunk-Methode und GetChunk-Methode Beispielen in der ADO-Programmierreferenz.