Trucsweb.com

ASP

ActiveX® Data Objects (ADO)

RDFFav

ADO - L’Objet « Recordset » ou le jeu d’enregistrement

Représente le jeu entier d’enregistrements d’une table de base ou les résultats d’une commande exécutée. L’objet Recordset ne peut faire référence qu’à un seul enregistrement à l’intérieur du jeu en tant qu’enregistrement actif.jeu d’enregistrement, recordset, requete, select, ADODB.Recordset
  • · Niveau : INTERMÉDIAIRE
  • · Compatibilité : Windows NT/2000 IIS3-IIS8

Représente le jeu entier d’enregistrements d’une table de base ou les résultats d’une commande exécutée. L’objet « Recordset » ne peut faire référence qu’à un seul enregistrement à l’intérieur du jeu en tant qu’enregistrement actif.

L’objet « Recordset » sert à manipuler les données provenant d’un base de données. Dès que vous utilisez l’ADO vous aurez à utiliser presque exclusivement l’objets « Recordset ». Tous les objets « Recordset » sont constitués d’enregistrements (lignes) et de champs (colonnes).

Autrefois « ADOR.Recordset », l’identifiant (ProgID) pour créer un objet « Recordset » doit maintenant faire référence à « ADODB.Recordset ».

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open [Chaine_de_Connexion]
  Set oRS = Server.CreateObject("ADODB.Recordset")
    ...
  set oRS = nothing
oConn.Close
Set oConn = Nothing

Pour exécuter une requête, passez une chaîne de requête à la méthode Open d’un objet « Recordset ».

dim oConn, sSQL, rsMAJ
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open [Chaine_de_Connexion]
  Set oRS = Server.CreateObject("ADODB.Recordset")
  oRS.open [chaine SQL],oConn,[curseur,curseur]
    ...
  oRS.Close
  set oRS = nothing
oConn.Close
Set oConn = Nothing
Il existe quatre types de curseurs définis dans ADO :

Le curseur est le pointeur qui fait référence à l’enregistrement courant et qui permet de naviguer entre les enregistrements ou les lignes du « Recordset ». Puisque le processus peut demander beaucoup de ressource, vous pouvez spécifier un type de curseur plus ou moins adapté à la requête.

  • Curseur dynamique (Dynamic cursor) - Permet de visualiser des ajouts, des modifications et des suppressions effectués par d’autres utilisateurs ; permet d’effectuer tous types de déplacements dans l’objet Recordset qui ne repose pas sur les signets ; prends également l’utilisation de signets si le fournisseur les prend en charge. Ce curseur est très puissant, mais aussi très gourmand en ressources serveur.

  • Curseur de jeu de clés (Keyset cursor) - Se comporte comme un curseur dynamique, sauf qu’il empêche l’affichage des enregistrements ajoutés par d’autres utilisateurs et l’accès aux enregistrements supprimés par ceux-ci. Les modifications apportées aux données par d’autres utilisateurs restent visibles. Ce curseur prend en charge les signets et permet donc tous types de déplacements à l’intérieur du Recordset. Plus limité, il est demande toujours beaucoup de ressource.

  • Curseur statique (Static cursor) - Fournit une copie statique d’un jeu d’enregistrements pour que vous puissiez y rechercher des données ou générer des rapports ; permet l’utilisation de signets et donc tous types de déplacements à l’intérieur du Recordset. Les ajouts, modifications et suppressions effectués par les autres utilisateurs ne sont pas visibles. Il s’agit du seul type de curseur accepté lorsque vous ouvrez un objet Recordset côté client. Toujours plus rapide sans possibilité de modifier l’enregistrement, il est demande toujours beaucoup de ressource en permettant l’aller retour dans le jeu d’enregistrement.

  • Curseur en avance seule (Forward-only cursor) - Permet uniquement le défilement en avant à l’intérieur du Recordset. Les ajouts, modifications et suppressions effectués par les autres utilisateurs ne sont pas visibles. Cela permet d’améliorer les performances lorsque vous ne devez effectuer qu’un seul passage dans un objet Recordset. C’est le curseur le plus rapide et le plus optimisé. Ce curseur devrait être privilégié pour la plupart des pages Web publique. C’est d’ailleurs le curseur par défaut, il n’est pas nécessaire de le définir.

Avant d’exécuter ou d’ouvrir un objet « Recordset », vous devez spécifier le type de curseur. Définissez la propriété CursorType pour choisir le type de curseur, ou passez un argument CursorType avec la méthode Open. Si vous ne spécifiez pas de type de curseur, ADO ouvre un curseur par défaut.

Si la propriété CursorLocation a la valeur adUseClient pour ouvrir un Recordset, la propriété UnderlyingValue sur les objets Field n’est pas disponible dans l’objet Recordset renvoyé. S’ils sont utilisés avec certains fournisseurs (comme Microsoft ODBC Provider for OLE DB conjointement avec Microsoft SQL Server), vous pouvez créer des objets Recordset indépendamment d’un objet Connection déjà défini, en transmettant une chaîne de connexion avec la méthode Open. ADO crée tout de même un objet Connection, il ne l’affecte pas à une variable objet. Toutefois, si vous ouvrez plusieurs objets Recordset sur la même connexion, il est conseillé de créer un objet Connection de manière explicite et de l’ouvrir ; l’objet Connection est ainsi affecté à une variable objet. Si vous n’utilisez pas de variable objet lorsque vous ouvrez vos objets Recordset, ADO crée un nouvel objet Connection pour chaque nouveau Recordset, même si vous transmettez la même chaîne de connexion.

Voilà les constantes les plus utilisées, voir la liste complète ici « Avec le fichier ADOVBS »

'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3

'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4

'---- CursorLocationEnum Values ----
Const adUseNone = 1
Const adUseServer = 2
Const adUseClient = 3
Const adUseClientBatch = 3

Vous pouvez créer autant d’objets « Recordset » que nécessaire, l’idée est d’ouvrir une nouvelle connexion à chaque fois, sans oublier de la fermer. Lire « Fermer et vider la connexion de la base de données ».

Lorsque vous ouvrez un « Recordset », l’enregistrement actif est le premier enregistrement (s’il existe) et les propriétés BOF (Bottom of file) et EOF (end of file) prennent la valeur « False ». S’il n’existe pas d’enregistrement, les paramètres de la propriété BOF et EOF ont la valeur True.

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

<%
dim oConn, sSQL, oRS
Set oConn = Server.CreateObject("ADODB.Connection")

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open [Chaine de connexion]
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.Open [SQL], oConn

Do While not oRS.EOF
   Response.Write (oRS(0))

  ' ATTENTION : assurez vous de passer à l'enregistrement suivant.
  oRS.MoveNext
Loop

oRS.Close
Set oRS = nothing
oConn.close
set oConn = nothing
%>

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

Si un fournisseur prend en charge la mise à jour par lot, vous pouvez décider que le fournisseur mette en cache plusieurs enregistrements et les transmette ensuite par l’intermédiaire d’un seul appel à la base de données ; utilisez pour cela la méthode UpdateBatch. Cela s’applique aux modifications effectuées avec les méthodes AddNew, Update et Delete. Après avoir appelé la méthode UpdateBatch, vous pouvez recourir à la propriété Status pour rechercher les éventuels conflits au niveau des données afin de les résoudre.

La méthode « Execute »

Un objet « Command » est nécessaire si vous voulez rendre persistant le texte de commande et l’exécuter de nouveau, ou utiliser des paramètres de requête.

<%
dim oConn, sSQL, oRS
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Mode = 2 ’ Écriture
oConn.Open [Chaine_de_Connexion]
  Set oRS = Server.CreateObject("ADODB.Recordset")
  Set oRS = oConn.Execute([chaine SQL])
  set oRS = nothing
oConn.close
set oConn = nothing
%>
La propriété Mode régit les autorisations d’accès.

La collection Fields est le membre par défaut de l’objet « Recordset ». Vous n’avez pas à le définir. Ainsi les deux instructions suivantes sont équivalentes :

oRS.Fields.Item(0)
oRS(0)              ' égal Item(0).
<% dim oConn, sSQL, oRS Set oConn = Server.CreateObject("ADODB.Connection") Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open [Chaine de connexion] Set oRS = Server.CreateObject("ADODB.Recordset") oRS.Open [SQL], oConn Do While not oRS.EOF Response.Write (oRS(0)) ’ ATTENTION : assurez vous de passer à l’enregistrement suivant. oRS.MoveNext Loop oRS.Close Set oRS = Nothing oConn.close set oConn = nothing %>
Django (Oznog) Blais
Dernière mise à jour :

Commentaires

       Visites : 942 - Pages vues : 85052
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@