Partager via


L'objet Field

Généralement, chaque objet Field correspond à une colonne d’une table de base de données. Toutefois, un champ peut également représenter un pointeur vers un autre Recordset, appelé un chapitre. Les exceptions, telles que les colonnes de chapitre, seront abordées plus loin dans ce guide.

Utilisez la propriété Value des objets Field pour définir ou retourner des données pour l'enregistrement en cours. Selon les fonctionnalités exposées par le fournisseur, certaines collections, méthodes ou propriétés d’un objet field peuvent ne pas être disponibles.

Avec les collections, méthodes et propriétés d’un objet Field, vous pouvez effectuer les opérations suivantes :

  • Retourne le nom d’un champ à l’aide de la propriété Name.

  • Affichez ou modifiez les données dans le champ à l'aide de la propriété valeur. Valeur est la propriété par défaut de l'objet Field.

  • Retournez les caractéristiques de base d’un champ à l’aide des propriétés Type, Précisionet NumericScale.

  • Retourne la taille déclarée d’un champ à l’aide de la propriété DefinedSize.

  • Retournez la taille réelle des données d'un champ donné en utilisant la propriété ActualSize.

  • Déterminez les types de fonctionnalités pris en charge pour un champ donné à l’aide de la propriété Attributes et de la collection Properties Properties.

  • Manipulez les valeurs des champs contenant des données binaires longues ou de caractères longs à l'aide des méthodes AppendChunk et GetChunk.

Résolvez les différences dans les valeurs de champ lors de la mise à jour par lots à l’aide des propriétés OriginalValue et UnderlyingValue, si le fournisseur prend en charge les mises à jour par lots.

Description d’un champ

Les rubriques qui suivent décrivent les propriétés de l’objet Field qui représentent des informations qui décrivent l’objet Field lui-même , c’est-à-dire des métadonnées sur le champ. Ces informations peuvent être utilisées pour en savoir beaucoup sur le schéma du jeu d'enregistrements . Ces propriétés incluent type, DefinedSize et ActualSize, Nameet NumericScale et Précision.

Découverte du type de données

La propriété type indique le type de données du champ. Les constantes énumérées de type de données prises en charge par ADO sont décrites dans DataTypeEnum dans la référence du programmeur ADO .

Pour les types numériques à virgule flottante tels adNumeric, vous pouvez obtenir plus d’informations. La propriété NumericScale indique le nombre de chiffres à droite du point décimal qui sera utilisé pour représenter les valeurs du champ . La propriété Precision spécifie le nombre maximal de chiffres utilisés pour représenter des valeurs pour le champ .

Détermination de la taille du champ

Utilisez la propriété DefinedSize pour déterminer la capacité de données d'un objet champ .

Utilisez la propriété ActualSize pour renvoyer la longueur réelle de la valeur d'un objet Field. Pour tous les champs, la propriété ActualSize est en lecture seule. Si ADO ne peut pas déterminer la longueur de la valeur de l'objet Field, la propriété ActualSize retourne adUnknown.

Les propriétés DefinedSize et ActualSize ont des objectifs différents. Par exemple, considérez un objet Field avec un type déclaré de adVarChar et une valeur de propriété DefinedSize de 50, contenant un caractère unique. La valeur de la propriété ActualSize qu'elle retourne correspond à la longueur en octets d'un seul caractère.

Détermination du contenu du champ

L’identificateur de la colonne de la source de données est représenté par la propriété Name du champ . La propriété Value de l’objet Field renvoie ou définit le contenu réel des données du champ. Il s’agit de la propriété par défaut.

Pour modifier les données d’un champ, définissez la propriété Value à une nouvelle valeur du type correct. Votre type de curseur doit prendre en charge les mises à jour pour modifier le contenu d’un champ. La validation de base de données n’est pas effectuée ici en mode batch. Vous devez donc rechercher les erreurs lorsque vous appelez UpdateBatch dans ce cas. Certains fournisseurs prennent également en charge les propriétés Field de l’objet UnderlyingValue et OriginalValue pour vous aider à résoudre les conflits lorsque vous tentez d’effectuer des mises à jour par lots. Pour plus d’informations sur la résolution de ces conflits, consultez Modification des données.

Note

Les valeurs des champs ne peuvent pas être définies lors de l’ajout de nouveaux champs à un jeu d'enregistrements . Au lieu de cela, de nouveaux champs peuvent être ajoutés à un jeu d’enregistrements fermé. Ensuite, le jeu d'enregistrements doit être ouvert, et ce n'est qu'alors que des valeurs peuvent être affectées à ces champs .

Obtention d’informations supplémentaires sur le champ

Les objets ADO ont deux types de propriétés : intégrées et dynamiques. À ce stade, seules les propriétés intégrées de l’objet Field ont été abordées.

Les propriétés intégrées sont ces propriétés implémentées dans ADO et immédiatement disponibles pour tout nouvel objet, à l’aide de la syntaxe MyObject.Property. Ils n’apparaissent pas en tant qu’objets Property dans la collection des propriétés d’un objet.

Les propriétés dynamiques sont définies par le fournisseur de données sous-jacent et apparaissent dans la collection Properties pour l’objet ADO approprié. Par exemple, une propriété spécifique au fournisseur peut indiquer si un objet recordset prend en charge les transactions ou la mise à jour. Ces propriétés supplémentaires apparaîtront sous forme d’objets Property dans la collection Properties de cet objet Recordset. Les propriétés dynamiques ne peuvent être référencées que par le biais de la collection, à l’aide de la syntaxe MyObject.Properties(0) ou MyObject.Properties("Name").

Vous ne pouvez pas supprimer l’un ou l’autre type de propriété.

Un objet Property dynamique possède quatre propriétés intégrées :

  • La propriété Name est une chaîne qui identifie la propriété.

  • La propriété Type est un entier qui spécifie le type de données de propriété.

  • La propriété Value est une variante qui contient le paramètre de propriété. Value est la propriété par défaut pour un objet Property.

  • La propriété Attributes est une valeur Long qui indique les caractéristiques de la propriété spécifique au fournisseur.

La collection Propriétés pour l'objet Field contient des métadonnées supplémentaires sur le champ. Le contenu de cette collection varie en fonction du fournisseur. L’exemple de code suivant examine la collection Properties de l’exemple Recordset introduit au début de cette section. Il examine d’abord le contenu de la collection. Ce code utilise le fournisseur OLE DB pour SQL Server, de sorte que la collection Properties contient des informations pertinentes pour ce fournisseur.

'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  

Traitement des données binaires

Utilisez la méthode AppendChunk sur un objet Field pour le remplir de données binaires ou de caractères longs. Dans les situations où la mémoire système est limitée, vous pouvez utiliser la méthode AppendChunk pour manipuler de longues valeurs dans des parties plutôt que dans leur intégralité.

Si le bit adFldLong dans la propriété Attributes d'un objet Field est défini sur True, vous pouvez utiliser la méthode AppendChunk pour ce champ.

Le premier appel AppendChunk sur un objet Field écrit des données dans le champ, en remplaçant les données existantes. Les appels AppendChunk suivants viennent s'ajouter aux données existantes. Si vous ajoutez des données à un champ, puis que vous définissez ou lisez la valeur d’un autre champ dans l’enregistrement actif, ADO suppose que vous avez terminé d’ajouter des données au premier champ. Si vous appelez à nouveau la méthode AppendChunk sur le premier champ, ADO interprète l’appel comme une nouvelle opération AppendChunk et remplace les données existantes. L’accès aux champs d’autres objets Recordset qui ne sont pas des clones du premier objet Recordset n’interrompt pas les opérations AppendChunk.

Utilisez la méthode GetChunk sur un objet Field pour récupérer une partie ou la totalité de ses données binaires ou de caractères longues. Dans les situations où la mémoire système est limitée, vous pouvez utiliser la méthode GetChunk pour manipuler de longues valeurs dans des parties, plutôt que dans leur intégralité.

Les données qu’un appel GetChunk renvoie sont affectées à variable. Si Taille est supérieure aux données restantes, la méthode GetChunk retourne uniquement les données restantes sans remplir la variable avec des espaces vides. Si le champ est vide, la méthode GetChunk retourne une valeur Null.

Chaque appel suivant GetChunk récupère les données à partir du point où le précédent appel GetChunk s'est arrêté. Toutefois, si vous récupérez des données à partir d’un champ, puis définissez ou lisez la valeur d’un autre champ dans l’enregistrement actif, ADO suppose que vous avez fini de récupérer des données à partir du premier champ. Si vous appelez à nouveau la méthode GetChunk sur le premier champ, ADO interprète l’appel comme une nouvelle opération GetChunk et commence à lire à partir du début des données. L'accès aux champs dans d'autres objets Recordset, qui ne sont pas des clones du premier objet Recordset, n'interrompt pas les opérations GetChunk.

Si le bit adFldLong dans la propriété Attributes d’un objet Field est défini sur True, vous pouvez utiliser la méthode GetChunk pour le champ.

S’il n’existe aucun enregistrement actif lorsque vous utilisez le GetChunk ou méthode AppendChunk sur un objet Field, l’erreur 3021 (aucun enregistrement actif) se produit.

Pour obtenir un exemple d’utilisation de ces méthodes pour manipuler des données binaires, consultez les de la méthode AppendChunk et méthode GetChunk des exemples dans la de référence du programmeur ADO.