Field, objet
Chaque objet Field correspond généralement à une colonne d’une table de base de données. Toutefois, un objet Field peut également représenter un pointeur vers un autre Recordset, appelé chapitre. Les exceptions, comme 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 actif. Selon la fonctionnalité exposée par le fournisseur, certaines collections, méthodes ou propriétés d’un objet Field peuvent ne pas être disponibles.
Avec les collections, les méthodes et les 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 du champ à l’aide de la propriété Value. Value est la propriété par défaut de l’objet Field.
Retourne les caractéristiques de base d’un champ à l’aide des propriétés Type, Precision et NumericScale.
Retourne la taille déclarée d’un champ à l’aide de la propriété DefinedSize.
Retourne la taille réelle des données dans un champ donné à l’aide de 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.
Manipulez les valeurs des champs contenant des données de caractères ou binaires longues à l’aide des méthodes AppendChunk et GetChunk.
Résolvez les différences dans les valeurs de champ pendant la mise à jour par lot à 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, autrement dit, les métadonnées relatives au champ. Ces informations peuvent être utilisées pour déterminer beaucoup de choses sur le schéma du Recordset. Ces propriétés incluent Type, DefinedSize, ActualSize, Name, NumericScale et Precision.
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 comme adNumeric, vous pouvez obtenir plus d’informations. La propriété NumericScale indique le nombre de chiffres à droite de la virgule décimale qui seront utilisés pour représenter des valeurs pour l’objet Field. La propriété Precision spécifie le nombre maximal de chiffres utilisés pour représenter des valeurs pour l’objet Field.
Détermination de la taille du champ
Utilisez la propriété DefinedSize pour déterminer la capacité de données d’un objet Field.
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 renvoie 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é adVarChar et une valeur de propriété DefinedSize de 50, contenant un caractère unique. La valeur de la propriété ActualSize retournée est la longueur en octets du caractère unique.
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 de l’objet Field. 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 sur une nouvelle valeur du bon type. Votre type de curseur doit prendre en charge les mises à jour pour modifier le contenu d’un champ. La validation de la base de données n’est pas effectuée ici en mode batch. Vous devez donc vérifier les erreurs lorsque vous appelez UpdateBatch dans ce cas. Certains fournisseurs prennent également en charge les propriétés UnderlyingValue et OriginalValue de l’objet Field ADO 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.
Remarque
Les valeurs de Recordset Field ne peuvent pas être définies lors de l’ajout de nouveaux Fields à un Recordset. Au lieu de cela, de nouveaux Fields peuvent être ajoutés à un Recordset fermé. Ensuite, le Recordset doit être ouvert, et seulement alors les valeurs peuvent être affectées à ces Fields.
Obtenir plus d’informations 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
. Elles n’apparaissent pas en tant qu’objets Property dans la collection Properties 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 en tant qu’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 la propriété.
La propriété Value est une variante contenant le paramétrage de la propriété. Value est la propriété par défaut d’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 Properties de 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 de Recordset présenté 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. Ainsi, 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
Utilisation de données binaires
Utilisez la méthode AppendChunk sur un objet Field pour le remplir avec des données de caractères ou binaires longues. Dans les situations où la mémoire système est limitée, vous pouvez utiliser la méthode AppendChunk pour manipuler des valeurs longues par portions plutôt que dans leur intégralité.
Si le bit adFldLong dans la propriété Attributes d’un objet Field a la valeur 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 toutes les données existantes. Les appels AppendChunk suivants ajoutent 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 dans d’autres objets Recordset qui ne sont pas 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 toutes ses données de caractères ou binaires longues. Dans les situations où la mémoire système est limitée, vous pouvez utiliser la méthode GetChunk pour manipuler des valeurs longues par portions plutôt que dans leur intégralité.
Les données retournées par un appel GetChunk sont affectées à une variable. Si la valeur Size est supérieure aux données restantes, la méthode GetChunk retourne uniquement les données restantes sans remplir variable avec des espaces vides. Si le champ est vide, la méthode GetChunk retourne une valeur null.
Chaque appel à GetChunk ultérieur récupère les données à partir de l’endroit où l’appel GetChunk précédent 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 part du principe 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 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 a la valeur True, vous pouvez utiliser la méthode GetChunk pour ce champ.
S’il n’existe aucun enregistrement actif lorsque vous utilisez la méthode GetChunk ou 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 exemples Méthode AppendChunk et Méthode GetChunk du Guide de référence du programmeur ADO.