Recordset, objet (ADO)

Représente l’ensemble des enregistrements d’une table de base ou les résultats d’une commande exécutée. À tout moment, l’objet Recordset fait référence à un seul enregistrement dans le jeu en tant qu’enregistrement actif.

Notes

Vous utilisez des objets Recordset pour manipuler des données d’un fournisseur. Lorsque vous utilisez ADO, vous manipulez des données presque entièrement à l’aide d’objets Recordset. Tous les objets Recordset sont constitués d’enregistrements (lignes) et de champs (colonnes). Selon la fonctionnalité prise en charge par le fournisseur, il se peut que certaines méthodes ou propriétés d’objet Recordset ne soient pas disponibles.

ADODB.Recordset est le ProgID à utiliser pour créer un objet Recordset. Les applications existantes référençant le ProgID ADOR.Recordset obsolète continueront de fonctionner sans recompilation, mais le nouveau développement devrait référencer ADODB.Recordset.

Il existe quatre types de curseurs définis dans ADO :

  • Curseur dynamique : permet d’afficher les ajouts, modifications et suppressions effectués par d’autres utilisateurs, autorise tous les types de déplacements dans l’objet Recordset qui ne reposent pas sur des signets, et autorise les signets si le fournisseur les prend en charge.

  • Curseur de jeu de clés : se comporte comme un curseur dynamique, sauf qu’il vous empêche de voir les enregistrements que d’autres utilisateurs ajoutent, ainsi que d’accéder aux enregistrements que d’autres utilisateurs suppriment. Les modifications de données effectuées par d’autres utilisateurs restent toujours visibles. Il prend toujours en charge les signets et autorise donc tous les types de déplacements dans l’objet Recordset.

  • Curseur statique : fournit une copie statique d’un ensemble d’enregistrements utilisables pour rechercher des données ou générer des rapports, autorise toujours les signets, et autorise donc tous les types de déplacements dans l’objet Recordset. Les ajouts, modifications ou suppressions par d’autres utilisateurs ne sont pas visibles. Il s’agit du seul type de curseur autorisé lorsque vous ouvrez un objet Recordset côté client.

  • Curseur avant uniquement : permet de faire défiler l’objet Recordset uniquement vers l’avant. Les ajouts, modifications ou suppressions par d’autres utilisateurs ne sont pas visibles. Cela améliore les performances dans les situations où vous n’avez besoin d’effectuer qu’un seul passage dans un objet Recordset.

Définissez la propriété CursorType avant d’ouvrir l’objet Recordset pour choisir le type de curseur, ou passez un argument CursorType à la méthode Open. Certains fournisseurs ne prennent pas en charge tous les types de curseurs. Consultez la documentation du fournisseur. Si vous ne spécifiez pas de type de curseur, par défaut, ADO ouvre un curseur avant uniquement.

Si la propriété CursorLocation est définie sur adUseClient pour ouvrir un objet Recordset, la propriété UnderlyingValue sur les objets Field n’est pas disponible dans l’objet Recordset retourné. Quand il est utilisé avec certains fournisseurs (par exemple, le Fournisseur Microsoft ODBC pour OLE DB conjointement avec Microsoft SQL Server), vous pouvez créer des objets Recordset indépendamment d’un objet Connection précédemment défini, en transmettant une chaîne de connexion avec la méthode Open. ADO crée toujours un objet Connection, mais n’affecte pas cet objet à une variable objet. Toutefois, si vous ouvrez plusieurs objets Recordset sur la même connexion, vous devriez créer et ouvrir explicitement un objet Connection. Cela a pour effet d’affecter l’objet Connection à une variable objet. Si vous n’utilisez pas cette variable objet lors de l’ouverture de vos objets Recordset, ADO crée un nouvel objet Connection pour chaque nouvel objet Recordset, même si vous passez la même chaîne de connexion.

Vous pouvez créer autant d’objets Recordset que nécessaire.

Lorsque vous ouvrez un objet Recordset, l’enregistrement actif est positionné sur le premier enregistrement (le cas échéant), et les propriétés BOF et EOF ont la valeur False. S’il n’existe aucun enregistrement, les paramètres de propriété BOF et EOF ont la valeur True.

Vous pouvez utiliser les méthodes MoveFirst, MoveLast, MoveNext et MovePrevious, la méthode Move, et les propriétés AbsolutePosition, AbsolutePage et Filter pour repositionner l’enregistrement actif, en supposant que le fournisseur prend en charge les fonctionnalités pertinentes. Les objets Recordset avant uniquement ne prennent en charge que la méthode MoveNext. Lorsque vous utilisez les méthodes Move pour visiter chaque enregistrement (ou énumérer l’objet Recordset), vous pouvez utiliser les propriétés BOF et EOF pour déterminer si vous avez dépassé le début ou la fin de l’objet Recordset.

Avant d’utiliser une fonctionnalité d’un objet Recordset, vous devez appeler la méthode Supports sur l’objet pour vérifier que la fonctionnalité est prise en charge ou disponible. Vous ne devez pas utiliser la fonctionnalité quand la méthode Supports retourne false. Par exemple, vous ne pouvez utiliser la méthode MovePrevious que si Recordset.Supports(adMovePrevious) retourne True. Sinon, vous obtiendrez une erreur, car l’objet Recordset a peut-être été fermé et la fonctionnalité rendue indisponible sur l’instance. Si une fonctionnalité qui vous intéresse n’est pas prise en charge, la méthode Supports retournera également false. Dans ce cas, vous devez éviter d’appeler la propriété ou la méthode correspondantes sur l’objet Recordset.

Les objets Recordset peuvent prendre en charge deux types de mise à jour : immédiate et par lots. Dans une mise à jour immédiate, toutes les modifications apportées aux données sont écrites immédiatement dans la source de données sous-jacente quand vous appelez la méthode Update. Vous pouvez également passer des tableaux de valeurs en tant que paramètres avec les méthodes AddNew et Update, et mettre à jour simultanément plusieurs champs dans un enregistrement.

Si un fournisseur prend en charge la mise à jour par lots, vous pouvez lui demander de mettre en cache les modifications apportées à plusieurs enregistrements, puis de les transmettre en un seul appel à la base de données avec la méthode UpdateBatch. Cela s’applique aux modifications apportées avec les méthodes AddNew, Update et Delete. Après avoir appelé la méthode UpdateBatch, vous pouvez utiliser la propriété Status pour rechercher d’éventuels conflits de données afin de les résoudre.

Notes

Pour exécuter une requête sans utiliser d’objet Command, passez une chaîne de requête à la méthode Open d’un objet Recordset. Toutefois, un objet Command est requis lorsque vous souhaitez conserver le texte de la commande et la réexécuter, ou utiliser des paramètres de requête.

La propriété Mode régit les autorisations d’accès.

La collection Fields est le membre par défaut de l’objet Recordset. Par conséquent, les deux instructions de code suivantes sont équivalentes.

Debug.Print objRs.Fields.Item(0)  ' Both statements print   
Debug.Print objRs(0)              '  the Value of Item(0).  

Quand un objet Recordset passe d’un processus à l’autre, seules les valeurs d’ensemble de lignes sont marshalées, et les propriétés de l’objet Recordset sont ignorées. Durant un unmarshaling, l’ensemble de lignes est décompressé dans un objet Recordset nouvellement créé, qui définit également ses propriétés sur les valeurs par défaut.

L’objet Recordset est sécurisé pour les scripts.

Cette section contient la rubrique suivante.

Voir aussi

Connection, objet (ADO)
Fields, collection (ADO)
Properties, collection (ADO)
Annexe A : Fournisseurs