L'Altruiste : Le guide des langages Web

La technique ADO

Sommaire

1 / Introduction

Les composants ActiveX Data Objects (ADO) permettent d'établir une interaction entre une application Web et des sources de données.

Les données représentent principalement le contenu d'un site Internet, et partant, possèdent un intérêt vital auprès des utilisateurs.

Dans le cas d'un site de commerce électronique, la parfaite administration des données constitue un enjeu capital dans la réussite de l'entreprise. En effet, il est nécessaire de mettre à jour régulièrement les données par, la modification des produits, l'ajout de nouveaux ou la suppression d'anciens.

La gestion d'un catalogue important rend obligatoire l'utilisation d'une ou plusieurs sources centralisant l'ensemble des données, indépendamment de la structure de présentation, basée en général sur le langage HTML.

ActiveX Data Objects associé à un langage de script tel que VBScript ou JScript, permettent de construire des applications Web puissantes et interactives, capables de fonctionner avec diverses sources de données, à l'image d'un base de données standards, d'un service d'annuaires ou de courriers électroniques, ou encore d'un système de fichiers.

Le modéle d'objets ADO facilite la gestion des données, en les décomposant en de multiples objets et collections.

Ainsi, un ensemble d'articles pourrait correspondre à un jeu d'enregistrements (objet Recordset), un article à un enregistrement (objet Record), les caractéristiques de ce-dernier à une collection de champs (collection Fields), une caractéristique à un champ (objet Field), etc..

De même, la connexion à une source de données, l'exécution de commandes, un des paramètres de ces dernières, ou encore l'accès au contenu d'un noeud, se traduisent tous par un objet spécifique, en l'occurrence respectivement, les objets Connection, Command, Parameter et Stream.

Une source de données devient ainsi, un ensemble d'objets divers, dont l'accès à chacun est relativement aisé, par l'intermédiaire des composants d'ADO.

Proposant des fonctionnalités combinant le meilleur des différentes techniques d'accès aux sources de données comme ODBC (Open DataBase Connectivity), DAO (Data Access Objects) ou RDO (Remote Data Objects), ADO offre un support universel dans l'échange des données (Universal data Access) pour les besoins actuels comme futurs.

OLE DB (Object Linking and Embedding DataBase) est une interface directe entre des applications COM (Component Object Model) écrites en C++ ou en Java et des sources de données.

Etant un composant COM, ADO ne peut accéder à une source de données que par l'intermédiaire d'OLE DB. Ainsi, une application ASP rédigée en VBScript ou JScript parvient à atteindre une base de données par une première couche spécifique, ADO, qui se charge de traverser l'interface OLE DB pour accéder au but.

Par ailleurs, ADO doit faire appel à un fournisseur correspondant au type d'une source de données et si nécessaire à un pilote ODBC afin d'ouvrir une liaison avec la source de données.

Le fonctionnement d'ADO sur une plateforme nécessite l'installation du composant MDAC (Microsoft® Data Access Components) et pour tirer pleinement parti de l'ensemble des fonctionnalités, l'installation de Visual Basic For Applications ou Visual Studio ou encore Visual C++.

2 / Les objets ADO

Les objets ADO permettent d'accomplir diverses actions sur des bases de données en utilisant un fournisseur OLE DB (Object Linking Embedding DataBase).

Chacun des objets ADO peuvent être contenus dans leurs collections correspondantes comme Field ou Error dans leur collection respective Fields et Errors.

2.1 / L'objet ADO Command

L'objet ADO Command permet d'exécuter diverses commandes sur des sources de données.

L'objet Command peut appliquer des requêtes sur une base de données et obtenir en retour des enregistrements (record) dans un jeu d'enregistrements (Recordset).

Il est également possible de manipuler la structure d'une base de données par l'intermédiaire de l'objet Command.

Le constructeur ci-dessous permet de créer un objet ADO Command.

Set Objet_Command = Server.CreateObject("ADODB.Command")
'ou
Set Objet_Command = New ADODB.Command

Désormais, il devient possible d'appliquer à cet objet ainsi créé, ses collections, propriétés ou méthodes.

Objet_Command.Collection | Propriété | Méthode
Les Collections
Collection
Description
Parameters
représente tous les objets paramètres d'un objet Command.
Properties
représente toutes les propriétés d'un objet Command
Les Propriétés
Propriété
Description
Set obj_Command.ActiveConnection = obj_Connection
indique l'appartenance à un objet Connection de l'objet en cours.
Objet_Command.CommandStream = "Chaîne de caractères"
indique le flux utilisé comme l'entrée pour un objet Command.
Objet_Command.CommandText = "Chaîne de caractères"
contient le texte d'une commande qui doit être envoyé à un fournisseur.
Objet_Command.CommandTimeout = Temps
indique le délai à appliquer lors de la tentative d'exécution d'une commande avant de déclencher l'interruption puis la génération d'un message d'erreur.
objet_Command.CommandType = CommandTypeEnum
indique le type d'un objet Command.
objet_Command.Dialect = GUID
indique le dialecte des propriétés CommandText ou Commandstream.
objet_Command.Name
retourne le nom d'un objet.
objet_Command.NamedParameters = True | False
indique si les noms de paramètres devraient être passés au fournisseur.
objet_Command.Prepared = True | False
indique s'il faut sauvegarder une version compilée d'une commande après l'exécution.
objet_Command.State = ObjectStateEnum
indique pour tous les objets applicables si l'état de l'objet est ouvert ou fermé.
Les Méthodes
Méthode
Description
Objet_Command.Cancel
annule l'exécution de l'appel d'une méthode
Set Objet_Parameter = Object_Command.CreateParameter(Nom, Type,
ParameterDirectionEnum, Taille, Valeur)
crée un nouvel objet Parameter avec les propriétés spécifiées.
Set recordset = Objet_Command.Execute(Enregistrements_Affectés,
Paramètres, Options)
'ou_Command.Execute
exécute une requête, un instructions SQL ou une procédure stockée spécifiée dans la propriété CommandText
Exemple [voir]
<html>
<head>
<title>Démonstration de Command</title>
<script language="VBScript">
  Sub Soumission_OnClick()
    If Len(formulaire.Nom.value) = 0 Then
    Alert "Veuillez entrer votre nom de famille !"
    formulaire.Nom.focus
    Exit Sub
    ElseIf Len(formulaire.Prenom.value) = 0 Then
    Alert "Veuillez entrer votre prénom !"
    formulaire.Prenom.focus
    Exit Sub
    ElseIf Len(formulaire.Age.value) = 0 Then
    Alert "Veuillez entrer votre âge !"
    formulaire.Age.focus
    Exit Sub
    ElseIf Len(formulaire.Qualite.value) = 0 Then
    Alert "Veuillez entrer votre qualité !"
    formulaire.Qualite.focus
    Exit Sub
    ElseIf Len(formulaire.eMail.value) = 0 Then
    Alert "Veuillez entrer votre adresse email !"
    formulaire.eMail.focus
    Exit Sub
    ElseIf Len(formulaire.Adresse.value) = 0 Then
    Alert "Veuillez entrer votre adresse complète !"
    formulaire.Adresse.focus
    Exit Sub
    End If
    Call formulaire.submit()
  End Sub
</script>
</head>
<body>
<%
  If Len(Request.Form("Etape")) = 0 Then
%>
<form action="command.asp" method="post" name="formulaire">
  <input type="hidden" name="Etape" value="Ajout">
  <table>
    <tr>
    <td>Nom</td>
    <td>
      <input type="text" name="Nom" size="20" value="ANNAIS">
    </td>
    </tr>
    <tr>
    <td>Prénom</td>
    <td>
      <input type="text" name="Prenom" size="20" value="Angélique">
    </td>
    </tr>
    <tr>
    <td>Age</td>
    <td>
      <input type="text" name="Age" size="3" value="23">
    </td>
    </tr>
    <tr>
    <td>Qualité</td>
    <td>
      <input type="text" name="Qualite" size="20" value="Rédacteur">
    </td>
    </tr>
    <tr>
    <td>eMail</td>
    <td>
      <input type="text" name="eMail" size="20" 
                value="angelique.annais@inc.com">
    </td>
    </tr>
    <tr>
    <td>Adresse</td>
    <td>
      <input type="text" name="Adresse" size="20" 
                value="155 Avenue Lingenfield 75000 PARIS">
    </td>
    </tr>
    <tr>
    <td>
      <input type="button" name="Soumission" value="Soumettre">
    </td>
    </tr>
  </table>
</form>
<%
  ElseIf Request.Form("Etape") = "Ajout" Then
  Dim Commande_SQL
  Commande_SQL = "Insert into Fiche (Nom, Prenom, Age, " & _
          "Qualite, eMail, Adresse) Values('" & _
           CStr(Request.Form("Nom")) & "','" & _
           CStr(Request.Form("Prenom")) & "'," & _
           CLng(Request.Form("Age")) & ",'" & _
           CStr(Request.Form("Qualite")) & "','" & _
           CStr(Request.Form("eMail")) & "','" & _
           CStr(Request.Form("Adresse")) & "')"
  Set obj_Connection = Server.CreateObject("ADODB.Connection")
  obj_Connection.Open "DSN=personnel"
  Set obj_Command = Server.CreateObject("ADODB.Command")
  Set obj_Command.ActiveConnection = obj_Connection
  obj_Command.CommandText = Commande_SQL
  obj_Command.CommandType = 1
  obj_Command.Execute
  Response.Write "<p>Les éléments suivants ont été ajoutés à la " & _
                "table de données <i>Personnel</i> :</p>" & _
                "<b>" & Commande_SQL & "</b>"
  Set obj_Command = Nothing
  obj_Connection.Close
  Set obj_Connection = Nothing
  End If
%>
</body>
</html>

2.2 / L'objet ADO Connection

L'objet ADO Connection représente un connexion ouverte à une source de données.

Objet_Connection.Collection | Méthode | Propriété | Evénement

Il n'est pas fondamentalement utile de créer un objet Connection pour ouvrir une connexion sur une base de données puisque automatiquement, une ouverture de cete dernière s'opère implicitement, lors de l'utilisation des objets Command, Recordset, et Record.

Outre la connexion à une base de données, l'objet Connection permet de paramètrer précisément des connexions dans le domaine de la sécurité, de la gestion des transactions, du fournisseur OLE DB, etc..

Dépendant des fonctionnalités supportées par le fournisseur, plusieurs collections, méthodes, ou propriétés d'un objet Connection peuvent ne pas être disponibles.

Les Collections
Collection
Description
Errors
contient tous les objets Error créés en réponse à des erreurs relatives du fournisseur.
Properties
contient toutes les objets Property pour une instance spécifique d'un objet.
Les Propriétés
Propriété
Description
Objet_Connection.Objet_Connection.Attributes
retourne une ou plusieurs caractéristiques d'un objet.
Objet_Connection.CommandTimeout = Temps
indique le délai à appliquer lors de la tentative d'exécution d'une commande avant de déclencher l'interruption puis la génération d'un message d'erreur.
Objet_Connection.ConnectionString = "Argument=Valeur..."
indique les informations utlisées pour établir une connexion à une source de données.
Objet_Connection.ConnectionTimeout = Temps
indique le délai de temporisation lors d'une tentative d'établissement d'une connexion avant de déclencher son interruption et la génération d'un message d'erreur.
Objet_Connection.CursorLocation = CursorLocationEnum
indique la localisation du service de curseur.
Objet_Connection.DefaultDatabase = "Base de donnée"
indique la base de données par défaut.
Objet_Connection.IsolationLevel = IsolationLevelEnum
indique le niveau d'isolation d'un objet Connection
Objet_Connection.Mode = ConnectModeEnum
indique les permissions disponibles pour la modification des données dans les objets Connection, Record ou Stream.
Objet_Connection.Provider
indique le nom du fournisseur à utiliser pour un objet Connection.
Objet_Connection.State = True | False
indique pour tous les objets applicables si l'état de l'objet est ouvert ou fermé.
Objet_Connection.Version
indique le numéro de version d'ActiveX Data Objects.
Les Méthodes
Méthode
Description
Objet_Connection.BeginTrans
commence une nouvelle transaction.
Objet_Connection.CommitTrans
sauvegarde n'importe quels changements et la fin de la transaction courante. Il est égaement possible de commencer une nouvelle transaction.
Objet_Connection.RollbackTrans
annule n'importe quels changements opérés durant la trasaction courante et termine la transaction. Il peut aussi démarrer une nouvelle transaction.
Objet_Connection.Cancel
annule l'exécution de la méthode appelée en cours.
Objet_Connection.Close
ferme un objet ouvert ainsi que tous les objets en dépendant.
Set recordset = Objet_Connection.Execute(Enregistrements_Affectés,
Paramètres, Options)
'ou_Command.Execute
exécute une requête, une instructions SQL, une procédure stockée ou le texte propre au fournisseur spécifié.
Objet_Connection.Open Texte_Connexion,
ID_Utilisateur, Mot_de_Passe, Options
ouvre une connexion à une source de données.
Set Objet_Recordset = Objet_Connection.OpenSchema(SchemaEnum,
Critères, ID_Schema)
obtient les informations en provenance du fournisseur, sur le schéma de la base de données.
Les Evénements
Evénement
Description
Objet_Connection.BeginTransComplete Niveau_Transaction,
Erreur, Statut, Connexion
est appelé après l'exécution de la méthode BeginTrans.
Objet_Connection.CommitTransComplete Erreur, Statut, Connexion
est appelé après l'exécution de la méthode CommitTrans.
Objet_Connection.RollbackTransComplete Erreur, Statut, Connexion
est appelé après l'exécution de la méthode RollbackTrans.
Objet_Connection.ConnectComplete Erreur, Statut, Connexion
est appelé après le démarrage d'une connexion.
Objet_Connection.Disconnect Statut, Connexion
est appelé après la fin d'une connexion.
Objet_Connection.ExecuteComplete Enregistrement_Affecté,
Erreur, Statut, Commande, Recordset, Connexion
est appelé après qu'une commande ait fini son exécution.
Objet_Connection.InfoMessage Erreur, Statut, Connexion
est appelé à chaque fois que se produit un avertissement durant une opération de connexion.
Objet_Connection.WillConnect Texte_Connexion,
ID_Utilisateur, Mot_de_passe, Options, Statut, Connexion
est appelé avant le démarrage d'une connexion.
Objet_Connection.WillExecute Source, Type_Curseur,
Type_Verrou, Options, Statut, Commande, Recordset, Connexion
est appelé juste avant une commande en instance soit exécutée sur une connection.
Exemple [voir]
<!-- Formulaire de modification -->
<html>
 <head>
 <script language="VBScript">
     Sub Soumission_OnClick()
       If Len(formulaire.txtNom.value) = 0 Then
       Alert "Veuillez entrer un Nom !"
       formulaire.txtNom.focus
       Exit Sub
       ElseIf Len(formulaire.txtPrenom.value) = 0 Then
       Alert "Veuillez entrer un Prénom !"
       formulaire.txtPrenom.focus
       Exit Sub
       ElseIf Len(formulaire.txtAge.value) = 0 Then
       Alert "Veuillez entrer un âge !"
       formulaire.txtAge.focus
       Exit Sub
       ElseIf Len(formulaire.txtQualite.value) = 0 Then
       Alert "Veuillez entrer une qualité !"
       formulaire.txtQualite.focus
       Exit Sub
       ElseIf Len(formulaire.txtAdresse.value) = 0 Then
       Alert "Veuillez entrer une adresse complète !"
       formulaire.txtAdresse.focus
       Exit Sub
       End If
       Call formulaire.submit()
     End Sub
 </script>
 </head>
 <body>
 <%
     Dim Commande_SQL
     If Len(Request.Form("Etape")) = 0 Then
       Set obj_Recordset = Server.CreateObject("ADODB.Recordset")
       obj_Recordset.Open "Select eMail from Fiche","DSN=Personnel"
 %>
 <form action="traitement.asp" method="post" name="form">
     <input type="hidden" name="Etape" value="Modif">
     <table>
       <tr>
       <th>Sélectionner une adresse eMail</th>
       </tr>
       <tr>
       <td>
         <select name="select_eMail">
         <%
           Do While Not obj_Recordset.EOF
         %>
           <option value="<%=obj_Recordset("eMail")%>">
             <%=obj_Recordset("eMail")%>
           </option>
         <%
             obj_Recordset.MoveNext
           Loop
           obj_Recordset.Close
           Set obj_Recordset = Nothing
         %>
         </select>
       </td>
       </tr>
       <tr>
       <td>
         <input type="submit" name="Validation" value="Soumettre">
       </td>
       </tr>
     </table>
 </form>
 <%
     ElseIf Request.Form("Etape") = "Modif" Then
       Commande_SQL = "Select * from Fiche where eMail = '" & _
                 CStr(Request.Form("select_eMail")) & "'"
       Set obj_Recordset = Server.CreateObject("ADODB.Recordset")
       obj_Recordset.Open strSQL,"DSN=personnel"
 %>
 <form action="connection.asp" method="post" name="formulaire">
     <input type="hidden" name="txtEmail" 
               value="<%=obj_Recordset("eMail")%>">
     <table>
       <tr>
       <td>eMail</td>
       <th style="color: red; font-size:12pt">
         <%=obj_Recordset("eMail")%>
       </th>
       </tr>
       <tr>
       <td>Nom</td>
       <td>
         <input type="text" name="txtNom" size="20"
                  value=<%=obj_Recordset("Nom")%>>
       </td>
       </tr>
       <tr>
       <td>Prenom</td>
       <td>
         <input type="text" name="txtPrenom" size="20"
                  value=<%=obj_Recordset("Prenom")%>>
       </td>
       </tr>
       <tr>
       <td>Age</td>
       <td>
         <input type="text" name="txtAge" size="20"
                  value=<%=obj_Recordset("Age")%>>
       </td>
       </tr>
       <tr>
       <td>Qualité</td>
       <td>
         <input type="text" name="txtQualite" size="20"
                  value=<%=obj_Recordset("Qualite")%>>
       </td>
       </tr>
       <tr>
       <td>Adresse</td>
       <td>
         <textarea name="txtAdresse" cols="20" rows="3">
           <%=obj_Recordset("Adresse")%>
         </textarea>
       </td>
       </tr>
       <tr>
       <td>
         <input type="button" name="Soumission" value="Modifier">
       </td>
       </tr>
     </table>
 </form>
 <%
       obj_Recordset.Close
       Set obj_Recordset = Nothing
     End If
 %>
 </body>
</html>
<!-- Formulaire de traitement traitement.asp -->
<html>
 <body>
 <%
     Dim Commande_SQL
     Dim adCmdText
     adCmdText = 1
     Commande_SQL = "Update Fiche Set " & _
               "Nom = '" & _
               CStr(Request.Form("txtNom")) & "', " & _
               "Prenom = '" & _
               CStr(Request.Form("txtPrenom")) & "', " & _
               "Age = " & _
               CLng(Request.Form("txtAge")) & ", " & _
               "Qualite = '" & _
               CStr(Request.Form("txtQualite")) & "', " & _
               "Adresse = '" & _
               CStr(Request.Form("txtAdresse")) & "' " & _
               "Where eMail = '" & _
               CStr(Request.Form("txtEmail")) & "'"
     Set obj_Connection = Server.CreateObject("ADODB.Connection")
     obj_Connection.Open "DSN=personnel"
     Set obj_Command = Server.CreateObject("ADODB.Command")
     Set obj_Command.ActiveConnection = obj_Connection
     obj_Command.CommandText = Commande_SQL
     obj_Command.CommandType = adCmdText
     obj_Command.Execute
     Response.Write "<p>Les éléments suivants ont été modifiés dans " & _
                   "la table de données <i>Personnel</i> :</p>" & _
                   "<b>" & Commande_SQL & "</b>"
     Set obj_Command = Nothing
     obj_Connection.Close
     Set obj_Connection = Nothing
 %>
 </body>
</html>

2.2.1 / Les arguments de ConnectionString

Les arguments de la propriété ConnectionString permettent de spécifier plusieurs valeurs à utiliser pour se connecter sur une source de données.

Objet_Connection.ConnectionString = _
                        "Argument=Valeur;...;ArguementN=Valeur"
Argument Description
Provider= indique le nom d'un fournisseur à utliser pour la connexion vers une source de données.
File Name= indique le nom d'un fichier spécifique du fournisseur contenant les préréglages des informations de connexion.
Remote Provider= indique le nom d'un fournisseur à utiliser quand une connexion côté client est ouverte.
Remote Server= indique le chemin du serveur quand une connexion côté client est ouverte.
URL= indique la chaîne de caractères de connexion comme une adresse URL absolue identifiant une ressource, à l'image d'un fichier ou d'un répertoire.

2.3 / L'objet ADO Error

L'objet ADO Error contient les détails des erreurs d'accès des bases de données qui concerne une unique opération impliquant le fournisseur.

Objet_Error.Propriété

Chaque objet ADO est susceptible de générer une ou plusieurs erreurs spécifiques au fournisseur.

A chaque fois qu'une erreur se produit, un ou plusieurs objets Error sont créés dans la collection Errors de l'objet Connection. Ainsi lorsqu'une opération ADO provoque une autre erreur, la collection Errors est réinitialisée afin d'accueillir le jeu d'erreurs en cours.

Certaines propriétés ou méthodes peuvent retourner des messages d'avertissments qui apparaissent dans la collection Errors à l'image des objets Error. Néanmoins, ces messages n'entraînent pas l'arrêt de l'exécution du programme.

Les Propriétés
Propriété
Description
Objet_Error.Description = Texte
retourne une description textuelle de l'erreur.
Objet_Error.HelpContext = ID_Contexte
retourne un entier long représentant l'identificateur contextuel pour atteindre un thème dans un fichier d'aide.
Objet_Error.HelpFile = Chemin_Fichier_Aide
retourne une chaîne de caractères représentant le chemin complet du fichier d'aide.
Objet_Error.NativeError = Code_Erreur_Fournisseur
retourne un entier long représentant le code d'erreur spécifique au fournisseur.
Objet_Error.Number = Numéro_Erreur
retourne un entier long représentant le numéro de l'erreur.
Objet_Error.Source = Nom_Objet
retourne l'identificateur de l'objet ou de l'application qui a provoqué l'erreur.
Objet_Error.SQLState = Etat_SQL
indique l'état SQL d'un objet Error.
Exemple [voir]
<html>
 <head>
 <%
     Function Verif_coll_Errors(obj_Connection)
     Dim obj_Error
     If Err.Number <> obj_Connection.Errors(0).Number Then
       Exit Function
     End If
     If obj_Connection.Errors.Count > 0 Then
       For Each obj_Error in obj_Connection.Errors
       If obj_Error.Number <> 0 Then
         Response.Write "" & _
           "<table border="0" cellpadding=1 cellspacing=2 border=1>" & _
           "<tr><th>Propriété</th><th>Valeur</th>" & _
           "</tr><tr><th>Numéro</th><td>" & obj_Error.Number & "</td></tr>" & _
           "<tr><th>Erreur native</th><td>" & obj_Error.NativeError & "</td></tr>" & _
           "<tr><th>Etat SQL</th><td>" & obj_Error.SQLState & "</td></tr>" & _
           "<tr><th>Source</th><td>" & obj_Error.Source & "</td></tr>" & _
           "<tr><th>Description</th><td>" & obj_Error.Description & "</td></tr>" & _
           "</table>"
         Verif_coll_Errors = True
       End If
       Next
     Else
       Verif_coll_Errors = False
     End If
     End Function

     On Error Resume Next
 %>
 </head>
 <body>
 <%
     Dim Ch_SQL
     Ch_SQL = "SELECT Noms, Prenom, Age, Qualites, eMail, Adresse" _
            & "FROM Fiche","DSN=personnel"
     Set obj_Recordset = Server.CreateObject("ADODB.Recordset")
     obj_Recordset.Open Ch_SQL
       If Verif_coll_Errors(obj_Recordset.ActiveConnection) = False Then
 %>
       <table border="1" cellpadding="3" align="center">
       <tr>
         <td colspan="6">Fiches signalétiques des personnels</td>
       </tr>
       <tr>
         <td>Nom</td>
         <td>Prénom</td>
         <td>Age</td>
         <td>Qualité</td>
         <td>eMail</td>
         <td>Adresse</td>
       </tr>
 <%
       Do While Not obj_Recordset.EOF
 %>
       <tr>
         <td><%=obj_Recordset("Nom")%></td>
         <td><%=obj_Recordset("Prenom")%></td>
         <td><%=obj_Recordset("Age")%></td>
         <td><%=obj_Recordset("Qualite")%></td>
         <td><%=obj_Recordset("eMail")%></td>
         <td><%=obj_Recordset("Adresse")%></td>
       </tr>
 <%
       obj_Recordset.MoveNext
       Loop
       End If
     obj_Recordset.Close
     Set obj_Recordset = Nothing
 %>
     </tr>
 </table>
 </body>
</html>

2.4 / L'objet ADO Fields

L'objet ADO Fields représente une colonne d'enregistrement possèdant un type commun de données, à l'intérieur d'un jeu d'enregistrement.

Objet_Field.Collection | Propriété | Méthode

L'utilisation de la propriété Value de l'objet Field permet de fixer ou de retourner les données pour l'enregistrement courant.

Objet_Field.Value = Valeur
Valeur = Objet_Field.Value

Les objets Field sont accessibles à partir d'une collection Fields. Ainsi, une boucle For Each...Next permet d'extraire chaque objet Field puis d'appliquer un traitement particulier au champ.

For Each Objet_Field in Objet_Recordset.Fields
 'Traitement à appliquer à Objet_Field...
Les Collections
Collection
Description
Properties
représente toutes les propriétés d'un objet Field
Les Propriétés
Propriété
Description
Objet_Field.ActualSize = Taille
retourne la taille actuelle des données du champ.
Objet_Field.Attributes = Entier
retourne un entier long indiquant une ou plusieurs caractéristiques de l'objet Field.
Objet_Field.DefinedSize = Taille_Définie
retourne la taille définie du champ.
Objet_Field.Name = Nom
retourne le nom d'un champ.
Objet_Field.NumericScale = Echelle
indique par une valeur octale le nombre de places décimales auxquelles des valeurs numériques seront séparées.
Objet_Field.OriginalValue = Valeur_Originale
indique la valeur d'un champ qui a existé dans l'enregistrement avant que n'importe quels changements n'aient été accomplis.
Objet_Field.Precision = Précision
indique par une valeur octale, le nombre maximal de chiffres utilisé pour représenter des valeurs.
Objet_Field.Status = FieldStatusEnum
indique le statut de l'enregistrement en cours.
Objet_Field.Type = DataTypeEnum
indique un type de données DataTypeEnum.
Objet_Field.UnderlyingValue = Valeur_Courante
indique la valeur courante de l'objet Field de la base de données.
Objet_Field.Value = Valeur
retourne la valeur du champ en cours.
Les Méthodes
Méthode
Description
Objet_Field.AppendChunk Données
ajoute des données à un grand texte ou un champ de données binaire.
Variable = Objet_Field.GetChunk(Taille)
retourne tout ou une portion des contenus d'un grand texte ou un objet Field de données binaires.
Exemple [voir]
<html>
 <body>
 <%
     Dim Obj_Recordset, Objet_Field
     Set Obj_Recordset = Server.CreateObject("ADODB.Recordset")
     obj_Recordset.Open "Select * from Fiche","DSN=personnel"
     With Obj_Recordset
       Compteur = .Fields.Count - 1
 %>
 <table border="1" cellpadding="3" align="center">
     <tr>
       <th>Nom</th>
       <th>Valeur</th>
       <th>Taille actuelle</th>
       <th>Taille définie</th>
       <th>Type</th>
     </tr>
       <th> </th>
       <th>Echelle num</th>
       <th>Précision</th>
       <th>Attribut</th>
       <th>Statut</th>
     </tr>
     <%
       Dim i
       Do While Not .EOF
         For i = 0 To Compteur
           For Each Objet_Field In .Fields
             Response.Write "<tr><th><i>" & Objet_Field.Name & "</i></th>"
             Response.Write "<td>" & Objet_Field.Value & "</td>"
             Response.Write "<td>" & Objet_Field.ActualSize & "</td>"
             Response.Write "<td>" & Objet_Field.DefinedSize & "</td>"
             Response.Write "<td>" & Objet_Field.Type & "</td></tr>"
             Response.Write "<tr><td> </td>"
             Response.Write "<td>" & Objet_Field.NumericScale & "</td>"
             Response.Write "<td>" & Objet_Field.Precision & "</td>"
             Response.Write "<td>" & Objet_Field.Attributes & "</td>"
             Response.Write "<td>" & Objet_Field.Status & "</td></tr>"
           Next
         Next
         .MoveNext
       Loop
       .Close
       End With
       Set obj_Recordset = Nothing
     %>
   </tr>
 </table>
 </body>
</html>

2.5 / L'objet ADO Parameter

L'objet ADO Parameter représente un paramètre ou un argument associé à un objet Command dans une requête paramètrée ou une procédure stockée.

Set obj_Parameter = Server.CreateObject("ADODB.Parameter")

Suite à leur instanciation par la formule ci-dessus, les paramètres peuvent accueillir leurs différentes caractéristiques comme leur nom, leur taille, leur type et en particulier leur valeur.

Il est également possible de créer un objet Parameter directement en utilisant la méthode CreateParameter de l'objet Command. Dans ce cas, les arguments de la méthode permettent d'obtenir directement les caractéristiques du paramètre.

Set Objet_Parameter = _
Object_Command.CreateParameter(Nom, Type, _
                         ParameterDirectionEnum, Taille, Valeur)

La plupart des fournisseurs supportent les commandes paramétrées. Ces commandes stockent des instructions SQL prédéfinies accessibles à partir des requêtes de la base de données. Ces requêtes paramétrées ou ces procédures stockées comprennent dans leur code différentes variables, dont les valeurs sont récupérées par la propriété Value de l'objet Parameter sur une page Web.

CREATE PROCEDURE Nom_Procedure
  @variable varchar(50)
  @variable2 INT
AS 
SELECT T1.champ,..., T2.champN
FROM Table AS T1 INNER JOIN Table2 AS T2
ON T1.Champ = T2.Champ
WHERE T1.ChampX = @variable
AND T2.ChampX = @variable2
GO
Les Collections
Collection
Description
Properties
contient toutes les objets Property pour une instance spécifique d'un objet.
Les Propriétés
Propriété
Description
Objet_Parameter.Attributes = Entier
retourne un entier long indiquant une ou plusieurs caractéristiques de l'objet Parameter.
Objet_Parameter.Direction = ParameterDirectionEnum
indiquent si l'objet Parameter représente un paramètre entrée, un paramètre produit, les deux, ou la valeur retournée à partir d'une procédure stockée.
Objet_Parameter.Name = Nom
retourne le nom d'un paramètre.
Objet_Parameter.NumericScale = Echelle
indique par une valeur octale le nombre de places décimales auxquelles des valeurs numériques seront séparées.
Objet_Parameter.Precision = Précision
indique par une valeur octale, le nombre maximal de chiffres utilisé pour représenter des valeurs.
Objet_Parameter.Size = Taille
indique la taille maximum en octets ou en caractères d'un objet Parameter.
Objet_Field.Type = DataTypeEnum
indique un type de données DataTypeEnum.
Objet_Parameter.Value = Valeur
retourne la valeur de l'objet Parameter.
Les Méthodes
Méthode
Description
Objet_Parameter.AppendChunk Données
ajoute des données à un paramètre.
Exemple [voir]
<html>
  <body>
  <%
      Function Verif_coll_Errors(oConn)
      Dim obj_Error
      If Err.Number <> oConn.Errors(0).Number Then
        Exit Function
      End If
      If oConn.Errors.Count > 0 Then
        For Each obj_Error in obj_Connection.Errors
        If obj_Error.Number <> 0 Then
          Response.Write "" & _
            "<table border="0" cellpadding=1 cellspacing=2 border=1>" & _
            "<tr><th>Propriété</th><th>Valeur</th>" & _
            "</tr><tr><th>Numéro</th><td>" & obj_Error.Number & "</td></tr>" & _
            "<tr><th>Erreur native</th><td>" & obj_Error.NativeError & "</td></tr>" & _
            "<tr><th>Etat SQL</th><td>" & obj_Error.SQLState & "</td></tr>" & _
            "<tr><th>Source</th><td>" & obj_Error.Source & "</td></tr>" & _
            "<tr><th>Description</th><td>" & obj_Error.Description & "</td></tr>" & _
            "</table>"
          Verif_coll_Errors = True
        End If
        Next
      Else
        Verif_coll_Errors = False
      End If
      End Function

      On Error Resume Next

      Dim adCmdStoredProc
      Dim adInteger
      Dim adVarChar
      Dim adParamInput
      adCmdStoredProc = 4
      adInteger = 3
      adVarChar = 200
      adParamInput = 1

      Set obj_Connection = Server.CreateObject("ADODB.Connection")
      obj_Connection.Open "dsn=librairie"

      Set obj_Command = Server.CreateObject("ADODB.Command")
      Set obj_Parameter = Server.CreateObject("ADODB.Parameter")
      Set obj_Recordset = Server.CreateObject("ADODB.Recordset")

      Set obj_Command.ActiveConnection = obj_Connection
      obj_Command.CommandText = "choixlivre"
      obj_Command.CommandType = adCmdStoredProc

      obj_Parameter.Name = "Editeur"
      obj_Parameter.Type = adVarChar
      obj_Parameter.Direction = adParamInput
      obj_Parameter.Size = 255
      obj_Parameter.Value = "EYROLLES"
      obj_Command.Parameters.Append obj_Parameter

      Set obj_Parameter = _
        obj_Command.CreateParameter("Categorie",adInteger,adParamInput,,2)
      obj_Command.Parameters.Append obj_Parameter

      Set obj_Recordset = obj_Command.Execute

      If Verif_coll_Errors(obj_Connection) = False Then
        Compteur = obj_Recordset.Fields.Count - 1
  %>
  <table border="1" cellspacing="1" cellpadding="2">
      <tr>
        <th colspan="5">Sélection de la cétégorie n°
        <%=obj_Command.Parameters.Item("Categorie").Value%>
          et de l'éditeur 
        <%=obj_Command.Parameters.Item("Editeur").Value%>
        </th>
      </tr>
      <tr>
       <th>Livre</th>
       <th>Collection</th>
       <th>Editeur</th>
       <th>Catégorie</th>
       <th>Prix</th>
      </tr>
  <%
        Do While Not obj_Recordset.EOF
  %>
        <tr>
        <%
          For i = 0 To Compteur
        %>
            <td><%=obj_Recordset.Fields.Item(i)%></td>
        <%
          Next
        %>
        </tr>
  <%
        obj_Recordset.MoveNext
        Loop
      End If

      obj_Recordset.Close
      Set obj_Recordset = Nothing
      Set obj_Parameter = Nothing
      Set obj_Command = Nothing
      obj_Connection.Close
      Set obj_Connection = Nothing
  %>
  </table>
  </body>
</html>
<!-- Requête paramétrée dans les requêtes de la base de données : choixlivre -->
PARAMETERS NomEditeur Text ( 255 ), CodeCategorie Long;
SELECT l.nom, l.collection, l.Editeur, c.nom, l.euros
FROM livre AS l INNER JOIN categorie AS c ON l.clecategorie=c.numcategorie
WHERE (((l.editeur)=[NomEditeur]) AND ((c.numcategorie)=[CodeCategorie]))
ORDER BY l.nom;

2.6 / L'objet ADO Property

L'objet ADO Property représente une caracéristique dynamique d'un objet ADO qui est défini par un fournisseur.

Un objet ADO possède deux types de propriétés, en l'occurrence programmé et dynamique.

Les premières sont celles exécutées dans ADO et sont immédiatement disponible à partir de n'importe quel objet nouvellement créé, en utilisant la syntaxe ci-dessous.

Objet.Property

Les propriétés programmées n'apparaissent pas comme des objets Property dans un collection Properties. Bien qu'il soit possible de modifier leur valeur, en revanche la modification de leurs caractéristiques est impossible.

Objet.Property = Valeur

Les secondes sont définies par le fournisseur de données sous-jacent, et apparaissent dans la collection ¨Properties pour l'objet ADO approprié. Les propriétés additionnelles se présentent comme des objets Property de la collection Properties de l'objet Recordset.

Les propriétés dynamiques sont disponibles à partir de l'une ou l'autre des expressions suivantes :

Objet.Properties(Index)
Objet.Properties("Nom")
Les Propriétés
Propriété
Description
Objet_Property.Attributes = Entier
retourne un entier long indiquant les caractéristiques de la propriété spécifique au fournisseur.
Objet_Property.Name = Nom
retourne une chaîne de caractères qui identifie la propriété.
Objet_Property.Type = DataTypeEnum
retourne un entier indiquant le type de données de la propriété.
Objet_Property.Value = Valeur
retourne un variant correspondant à la valeur de la propriété.
Exemple [voir]
<html>
  <body>
  <%
      Dim obj_Connection
      Dim obj_Recordset
      Dim ch_Source
      Dim ch_SQL

      set obj_Connection=server.CreateObject("ADODB.connection")
      ch_Source = "Provider=Microsoft.Jet.OLEDB.4.0"
      ch_Source = ch_Source & "; Data Source=C:\Base_donnee\Personnel.mdb"
      obj_Connection.connectionstring = ch_Source
      obj_Connection.Open

      set obj_Recordset = server.CreateObject("ADODB.recordset")
      ch_SQL = "SELECT Nom, Prenom FROM Fiche;"
      obj_Recordset.Open ch_SQL,obj_Connection
      Response.Write "<h3>Personnels :</h3>"
      Do until obj_Recordset.EOF
        Response.Write "<b>" & obj_Recordset("Nom") & "</b> " _
                    & obj_Recordset("Prenom") & "<br>"
        obj_Recordset.MoveNext
      Loop

      Response.Write "<h3>Propriétés de l'objet Connection :</h3>" _
      & "<table border=1>" _
      & "<tr><th>N°</th>" _
      & "<th>Type</th>" _
      & "<th>Attribut</th>" _
      & "<th>Nom</th>" _
      & "<th>Valeur</th></tr>"
      dim i
      i = 0
      for each obj_Property in obj_Connection.Properties
        i = i + 1
        Response.Write "<tr><td>" & i & "</td>"
        Response.Write "<td>" & obj_Property.type  & "</td>"
        Response.Write "<td>" & obj_Property.attributes & "</td>"
        Response.Write "<td>" & obj_Property.name  & "</td>"
        Response.Write "<td>" & obj_Property.value  & "</td></tr>"
      Next
      Response.Write "</table>"
  %>
  </body>
</html>

2.7 / L'objet ADO Record

L'objet ADO Record représente un enregistrement dans une base de données, un fichier ou un répertoire dans un système de fichiers.

Set Objet_Record = Server.CreateObject("ADODB.Record")

ActiveX Data Objects permet de gérer des enregistrements provenant aussi bien des données structurées, telles que ceux des bases de données, que des données semi-structurées organisées en arborescence et possédant des noeuds à plusieurs niveaux comme dans la cas d'un système de fichiers.

L'objet Record, dans cette dernière situation correspond à un noeud unique de l'arborescence, comme un fichier ou un répertoire.

Si le noeud contient d'autres répertoires ou fichiers, alors cette collection de noeuds enfants correspond à un jeu d'enregistrements, autrement dit à un objet Recordset.

Set Obj_Recordset = Objet_Record.GetChildren

D'autre-part, les propriétés d'un noeud enfant sont assimilés à une collection de champs, soit à une collection Fields.

Les Collections
Collection
Description
Fields
contient une colonne de données avec un type commun.
Properties
contient toutes les objets Property pour une instance spécifique d'un objet.
Les Propriétés
Propriété
Description
Objet_Record.ActiveConnection = Objet_Connection
indique l'objet Connection d'appartenance de l'objet en cours.
Objet_Record.Mode = ConnectModeEnum
indique les autorisations de modification de données de l'objet Record.
Objet_Record.ParentURL = Adresse_URL
retourne une adresse URL absolue qui pointe l'enregistrement parent de l'objet Record en cours.
Objet_Record.RecordType = RecordTypeEnum
Objet_Record.Source = Chaîne de caractères
retourne la source de données de l'enregistrement en cours.
Objet_Record.State = ObjectStateEnum
retourne l'état de l'objet Record, c'est-à-dire s'il est ouvert ou fermé.
Les Méthodes
Méthode
Description
Objet_Record.Cancel
annule l'exécution de l'appel en attente.
Objet_Record.Close
ferme l'objet Record ouvert ainsi que tous les objets qui en dépendent.
Objet_Record.CopyRecord(Source, Destination,
Nom_Utilisateur, Mot_Passe, CopyRecordOptionsEnum, Bool_Asynchrone)
copie un fichier ou un répertoire et son contenu vers une destination.
Objet_Record.DeleteRecord Source, Bool_Asynchrone
supprime l'entité représentée par un enregistrement.
Set Obj_Recordset = Objet_Record.GetChildren
retourne un objet Recordset dont les lignes représentent les fichiers et les sous-répertoires du répertoire représenté par l'objet Record.
Objet_Record.MoveRecord(Source, Destination,
Nom_Utilisateur, Mot_Passe, MoveRecordOptionsEnum, Bool_Asynchrone)
déplace un fichier ou un répertoire et son contenu vers un destination.
Objet_Record.Open Source, ActiveConnection, ConnectModeEnum,
RecordCreateOptionsEnum, RecordOpenOptionsEnum,
Nom_Utilisateur, Mot_Passe
ouvre un objet Record existant ou en crée un nouveau.
Exemple [voir]
<html>
  <body>
  <%
      Dim Objet_Record, Champ
      Set Objet_Record= Server.CreateObject("ADODB.Record")

      Objet_Record.Open "", "URL=http://localhost/repertoire"

      Response.Write "<table border=1>"
      For each Champ in Objet_Record.Fields
         Response.Write "<tr><td>" & Champ.Name & _
                        "</td><td>" & Champ.Value & _
                        "</td></tr>"
      Next
      Response.Write "</table>"

      Objet_Record.Close
      Set Objet_Record = Nothing
  %>
  </body>
</html>

2.8 / L'objet ADO Recordset

L'objet ADO Recordset contient l'ensemble des enregistrements d'une base de données ou le résultat d'une requête suite à l'exécution d'une commande.

Set obj_Recordset = Server.CreateObject("ADODB.Recordset")

Couramment utilisé, l'objet Recordset permet d'accomplir différentes tâches sur un jeu d'enregistrements, comme l'ouverture ou la fermeture de l'objet, mais surtout, l'extraction, l'ajout, la suppression ou la mise à jour des données.

Dim Obj_Recordset
' Instanciation de l'objet
Set Obj_Recordset = Server.CreateObject("ADODB.Recordset")
' Ouverture
Obj_Recordset.Open "SELECT * FROM Table", _
                  Obj_Connection, _
                  adOpenKeySet, _
                  adLockOptimistic

Obj_Recordset.Fields("Nom_Champs") = "Valeur du champs"
Obj_Recordset.Update ' Mise à jour
Obj_Recordset.Close ' Fermeture

Quelques unes des fonctions importantes de l'objet Recordset sont, également, d'explorer un jeu d'enregistrements par l'intermédiaire des méthodes MoveNext, MovePrevious, MoveLast, MoveFirst, Move, d'effectuer des recherches par Seek ou Find, ou de tester la position du pointeur d'enregistrement avec les propriétés BOF (Before Of File), EOF (End Of File) ou AbsolutePosition.

Do While Not Obj_Recordset.EOF ' Atteindre Fin de Fichier
  Response.Write Obj_Recordset.Fields("Nom_Champs")
  Obj_Recordset.MoveNext ' Enregistrement suivant
Loop
Les Collections
Collection
Description
Fields
contient une colonne de données avec un type commun.
Properties
contient toutes les objets Property pour une instance spécifique d'un objet.
Les Propriétés
Propriété
Description
Objet_Recordset.AbsolutePage = PositionEnum
retourne la page de l'enregistrement en cours.
Objet_Recordset.AbsolutePosition = PositionEnum
retourne la position de l'enregistrement en cours.
Objet_Command = Objet_Recordset.ActiveCommand
retourne l'objet Command qui a créé l'objet Recordset correspondant.
Set Objet_Recordset.ActiveConnection = Objet_Connection
indique l'objet Connection d'appartenance de l'objet en cours.
Objet_Recordset.BOF = True | False
indique que l'enregistrement en cours est positionné avant le premier de l'objet Recordset.
Objet_Recordset.Bookmark = Variant_Signet
retourne un signet identifiant d'une façon unique l'enregistrement en cours, ou assigne un signet à l'enregistrement en cours.
Objet_Recordset.CacheSize = Nombre
retourne le nombre d'enregistrements d'un objet Recordset stockés en mémoire cache.
Objet_Recordset.CursorLocation = CursorLocationEnum
retourne ou détermine la position du moteur de curseur.
Objet_Recordset.CursorType = CursorTypeEnum
indique le type de curseur à utiliser avec un objet Recordset.
Objet_Recordset.DataMember = Chaîne_de_caractères
retourne le nom du membre-donnée à extraire de l'objet Recordset défini par la propriété DataSource.
Objet_Recordset.DataSource = Objet
indique qu'un objet contenant des données doit être assimilé à un objet Recordset.
Objet_Recordset.EditMode = EditModeEnum
retourne le statut de modification de l'enregistrement en cours.
Objet_Recordset.EOF = True | False
indique que l'enregistrement en cours a atteint le dernier enregistrement d'un objet Recordset.
Objet_Recordset.Filter = Valeur
détermine un filtre de données dans un objet Recordset. La valeur peut contenir une chaîne de caractères composée de différentes clauses liées par des opérateurs AND ou OR, un tableau de signets pointant vers des enregistrements ou une constante FilterGroupEnum.
Objet_Recordset.Index = Cnaîne de caractères
retourne le nom de l'index en cours pour l'objet Recordset.
Objet_Recordset.LockType = LockTypeEnum
retourne le type de verrouillage des enregistrements lors des modifications.
Objet_Recordset.MarshalOptions = MarshalOptionsEnum
indique les enregistrement devant être renvoyés au serveur.
Objet_Recordset.MaxRecords = Nombre
indique le nombre maximal d'enregistrements à retourner à l'objet Recordset pour une même requête.
Objet_Recordset.PageCount = Nombre
retourne le nombre de pages de données contenues dans l'objet Recordset.
Objet_Recordset.PageSize = Nombre
retourne le nombre d'enregistrements contenus dans la page de l'objet Recordset.
Objet_Recordset.RecordCount = Nombre
retourne le nombre en cours des enregistrements présents dans un objet Recordset.
Objet_Recordset.Sort = Chaîne de caractères
indique un ou plusieurs noms de champs permettant d'effectuer un tri sur un objet Recordset.
Objet_Recordset.Source = Chaîne de caractères
retourne la source de données d'un jeu d'enregistrements.
Objet_Recordset.State = ObjectStateEnum
retourne l'état de l'objet Recordset, c'est-à-dire s'il est ouvert ou fermé.
Objet_Recordset.Status = RecordStatusEnum
retourne le statut de l'enregistrement en cours en ce qui concerne les mises à jour par lots ou autres opérations globales.
Objet_Recordset.StayInSync = True | False
indique dans un objet Recordset hiérarchique, si la ligne parent doit changer lorsque l'ensemble des enregistrements enfants sous-jacents change.
Les Méthodes
Méthode
Description
Objet_Recordset.AddNew Liste_champs, Valeurs
crée un nouvel enregistrement pour un objet Recordset pouvant être mis à jour.
Objet_Recordset.Cancel
annule l'exécution de l'appel en attente.
Objet_Recordset.CancelBatch [AffectEnum]
annule une mise à jour par lots en attente.
Objet_Recordset.CancelUpdate
annule toutes les modifications appliquées à l'enregistrement en cours ou à un nouvel enregistrement avant d'appeler la méthode Update.
Objet_Recordset.Clone LockTypeEnum
crée un objet Recordset en double à partir d'un objet Recordset existant.
Objet_Recordset.Close
ferme un objet Recordset ouvert ainsi que tous les objets en dépendant.
Objet_Recordset.CompareBookmarks Signet, Signet2
compare deux signets et retourne une indication CompareEnum de leurs valeurs relatives.
Objet_Recordset.Delete AffectEnum
supprime l'enregistrement en cours ou un groupe d'enregistrements.
Objet_Recordset.Find(Critère, Saut_ligne,
SearchDirectionEnum, Démarrage)
recherche dans un objet Recordset l'enregistrement correspondant aux critères spécifiés en argument.
Objet_Recordset.GetRows[(GetRowsOptionEnum,
BookmarkEnum, Enregistrements)]
extrait plusieurs enregistrements d'un objet Recordset et les retournent dans un tableau.
Objet_Recordset.GetString(StringFormatEnum,
Nb_Lignes, Délimiteur_Colonnes, Délimiteur_Lignes, Expression_Val_Null)
retourne l'objet Recordset sous forme de chaîne de caractères.
Objet_Recordset.Move Nb_Enregistrements, BookmarkEnum
déplace la position de l'enregistrement en cours.
Objet_Recordset.MoveFirst
déplace l'enregistrement en cours sur le premier enregistrement de l'objet Recordset.
Objet_Recordset.MoveLast
déplace l'enregistrement en cours sur le dernier enregistrement de l'objet Recordset.
Objet_Recordset.MoveNext
déplace l'enregistrement en cours sur le prochain enregistrement de l'objet Recordset.
Objet_Recordset.MovePrevious
déplace l'enregistrement en cours sur le précédent enregistrement de l'objet Recordset.
Objet_Recordset.NextRecordset Nb_Enregistrements
efface l'objet Recordset en cours et retourne l'objet Recordset suivant.
Objet_Recordset.Open Source, ActiveConnection,
CursorTypeEnum, LockTypeEnum, Options
ouvre un curseur. L'argument Source peut être un objet Command valide, une déclaration SQL, un nom de table, un appel de procédure stocké, un URL, ou le nom d'un fichier ou encore l'objet Stream contenant un objet Recordset stocké avec persistance. L'argument ActiveConnection peut être un nom d'objet Connection valide ou une chaîne de caractères contenant des paramètres de la propriété ConnectionString, Enfin, l'argument Options peut combiner un ou plusieurs CommandTypeEnum ou ExecuteOptionEnum avec l'opérateur de niveau de bit AND.
Objet_Recordset.Requery Options
exécute une requête permettant de mettre à jour un objet Recordset. L'argument Options est identique à celui ci-dessus.
Objet_Recordset.Resync AffectEnum, ResyncEnum
actualise les données de l'objet Recordset en cours à partir de la base de données sous-jacentes.
Objet_Recordset.Save Destination, PersistFormatEnum
sauvegarde l'objet Recordset dans un fichier. L'argument Destination correspond à un chemin complet d'un fichier où l'objet Recordset a été sauvegardé, ou encore une référence vers un objet Stream.
Objet_Recordset.Seek Tableau_Valeurs, SeekEnum
recherche dans l'index d'un objet Recordset pour rapidement loccaliser la ligne qui correspond aux valeurs spécifiées et déplace la position de la ligne courante vers cette ligne.
Objet_Recordset.Supports(CursorOptionEnum)
définit si un objet Recordset spécifié prend en charge un type de fonctionnalité particulier.
Objet_Recordset.Update Enregistrements, Valeurs
sauvegarde des modifications apportées à l'enregistrement en cours d'un objet Recordset.
Objet_Recordset.UpdateBatch AffectEnum
sauvegarde toutes les mises à jour par lots en attente.
Les Evénements
Evénement
Description
Objet_Recordset.EndOfRecordset Plus_Lignes,
EventStatusEnum, Recordset
est appelé lors d'une tentative de déplacement vers un enregistrement situé au-delà de la fin d'un objet Recordset.
Objet_Recordset.FetchComplete Erreur, EventStatusEnum, Recordset
est appelé après que tous les enregistrements dans une opération asynchrone de longue durée ont été extraits.
Objet_Recordset.FetchProgress Progression, Progression_Max,
EventStatusEnum, Recordset
est appelé périodiquement au cours d'une opération asynchraone de longue durée pour indiquer le nombre d'enregistrements extraits.
Objet_Recordset.WillChangeField Nb_Fields, Fields,
EventStatusEnum, Recordset
est appelé avant qu'une opérationen attente ne modifie la valeur d'un ou plusieurs objets Field.
Objet_Recordset.FieldChangeComplete Nb_Fields, Fields, Erreur,
EventStatusEnum, Recordset
est appelé après la modification de la valeur d'un ou plusieurs objets Field.
Objet_Recordset.WillChangeRecord EventReasonEnum,
Nb_Records, EventStatusEnum, Recordset
est appelé avant qu'une opération en attente ne modifie un objet Recordset.
Objet_Recordset.RecordChangeComplete EventReasonEnum,
Nb_Records, Erreur, EventStatusEnum, Recordset
est appelé après qu'un ou plusieurs enregistrements ont été modifiés.
Objet_Recordset.WillChangeRecordset
EventReasonEnum, EventStatusEnum, Recordset
est appelé avant qu'une opération en attente ne modifie l'objet Recorset.
Objet_Recordset.RecordsetChangeComplete EventReasonEnum, Erreur,
EventStatusEnum, Recordset
est appelé après que l'objet Recordset a été modifié.
Objet_Recordset.WillMove
EventReasonEnum, EventStatusEnum, Recordset
est appelé avant que l'opération en attente ne change la position en cours.
Objet_Recordset.MoveComplete
EventReasonEnum, Erreur, EventStatusEnum, Recordset
est appelé après qu'un ou plusieurs en registrements ont été modifiés.
Exemple [voir]
<html>
  <body>
  <%
      Set obj_Recordset = Server.CreateObject("ADODB.Recordset")
      obj_Recordset.Open "Select * from Fiche","DSN=personnel"
  %>
  <table border="1" cellpadding="3" align="center">
      <tr>
        <td colspan="6">Fiches signalétiques des personnels</td>
      </tr>
      <tr>
        <td>Nom</td>
        <td>Prénom</td>
        <td>Age</td>
        <td>Qualité</td>
        <td>eMail</td>
        <td>Adresse</td>
      </tr>
        <%
        Do While Not obj_Recordset.EOF
        %>
        <tr>
          <td><%=obj_Recordset("Nom")%></td>
          <td><%=obj_Recordset("Prenom")%></td>
          <td><%=obj_Recordset("Age")%></td>
          <td><%=obj_Recordset("Qualite")%></td>
          <td><%=obj_Recordset("eMail")%></td>
          <td><%=obj_Recordset("Adresse")%></td>
        </tr>
        <%
          obj_Recordset.MoveNext
        Loop
        obj_Recordset.Close
        Set obj_Recordset = Nothing
        %>
      </tr>
  </table>
  </body>
</html>

2.9 / L'objet ADO Stream

L'objet Stream fournit les moyens de lire, écrire et gérer un flux d'octets. Ce dernier peut être composé de données textuelles ou binaires et n'est limité que dans la taille par les ressources du système.

Objet_Stream.Propriété | Méthode

Un objet Stream est utilisé pour contenir :

Un objet Stream peut également recevoir des résultats provenant d'un fournisseur OLE DB, autre qu'un objet Recordset, comme du XML par exemple.

Dans des sources de données semi-structurées comme un système de fichiers ou de courriers électroniques, un enregistrement peut avoir un flux de fichier binaire par défaut associées au contenu d'un fichier ou d'un courrier électronique.

Un objet Stream peut être utilisé pour manipuler des champs ou des enregistrements contenant ces flux de données.

Un objet Stream peut être obtenu à partir d'une adresse URL pointant vers un objet qui contient des données binaires ou textuelles. Cet objet peut être un document simple, un objet Record représentant un fichier ou un répertoire.

Un objet Stream par défaut peut être ouvert depuis un objet Record ou Recordset. Il est possible d'obtenir le flux par défaut associé à un enregistrement lorsque l'objet afférent est ouvert, pour éliminer un aller-retour pour l'ouverture du flux.

Les objets Stream, obtenu par instanciation, peuvent être utilisés pour stocker des données au bénéfice d'une application. Différent d'un flux associé à une adresse URL ou du flux par défaut d'un enregistrement, un objet Stream instancié ne possède aucune association avec une source sous-jacente par défaut.

Set Objet_Stream = Server.CreateObject("ADODB.Stream")
Les Propriétés
Propriété
Description
Objet_Stream.Charset = "jeu_de_caractères"
indique le jeu de caractères permettant de convertir le contenu textuel d'un objet Stream.
Objet_Stream.EOS = True | False
indique par une valeur booléenne si la position courante a atteint la fin du flux (End Of Stream).
Objet_Stream.LineSeparator = LineSeparatorEnum
indique le caractère utilisé comme séparateur pour un flux textuel.
Objet_Stream.Mode = ConnectModeEnum
indique les autorisations de modification des données de l'objet Stream.
Objet_Stream.Position = Position
indique par un entier long, la position courante dans l'objet Stream.
Objet_Stream.Size = Taille
indique par un entier long, la taille de l'objet Stream en octets ou en caractères.
Objet_Stream.State = ObjectStateEnum
indique si l'objet est dans un état ouvert ou fermé.
Objet_Stream.Type = StreamTypeEnum
indique le type de données contenues dans l'objet Stream.
Les Méthodes
Méthode
Description
Objet_Stream.Cancel
annule l'exécution de l'appel en attente.
Objet_Stream.Close
ferme un objet ouvert ainsi que tous les objets qui en dépendent.
Objet_Stream.CopyTo Destination_oStream, Nombre_Caractères
copie le nombre de caractères ou d'octets vers un autre objet Stream.
Objet_Stream.Flush
force l'écriture des données du flux dans l'objet sous-jacent.
Objet_Stream.LoadFromFile Fichier
charge le contenu d'un fichier existant dans l'objet Stream.
Objet_Stream.Open Source, ConnectModeEnum,
StreamOpenOptionsEnum, Nom_Utilisateur, Mot_Passe
ouvre un objet Stream afin de manipuler le flux de données binaires ou textuelles.
Objet_Stream.Read(Nombre_Octets)
lit un nombre d'octets spécifiés dans un objet Stream binaire.
Objet_Stream.ReadText(Nombre_Caractères)
lit un nombre de caractères spécifiés dans un objet Stream textuel.
Objet_Stream.SaveToFile Fichier, SaveOptionsEnum
sauvegarde le contenu binaire d'un objet Stream ouvert.
Objet_Stream.SetEOS
place la position courante à la fin du flux.
Objet_Stream.SkipLine
saute une ligne lors de la lecture d'un objet Stream textuel.
Objet_Stream.Stat(StatStgEnum, StatFlag)
retourne un entier représentant une information à propos de l'objet Record.
Objet_Stream.Write Donnée_binaire
écrit des données binaires dans l'objet Stream.
Objet_Stream.WriteText Donnée, StreamWriteEnum
écrit du texte dans un objet Stream.
Exemple [voir]
<html>
  <body>
  <%
      Dim objet_Stream
      Dim Select_Fichier
      Dim adTypeText
      adTypeText = 2
      Select_Fichier = "c:\autoexec.bat"

      set objet_Stream = Server.CreateObject("ADODB.Stream")
      objet_Stream.Open
      objet_Stream.LoadFromFile Select_Fichier
      objet_Stream.Type = adTypeText
      Objet_Stream.Charset = "ISO-8859-1"

      Taille_Fichier = objet_Stream.Size
      Affiche_Contenu= objet_Stream.ReadText

      Response.Write "Fichier : " & Select_Fichier & "<br>"
      Response.Write "Taille : " & Taille_Fichier & " Octets<br>"
      Response.Write "Contenu : " & Affiche_Contenu

      objet_Stream.Close
      set objet_Stream = nothing
  %>
  </body>
</html>

3 / Les collections

Les collections ADO contiennent chacune d'aucun à plusieurs objets du même type.

Toutes ses collections possèdent des propriétés identiques, en l'occurrence Count comptabilisant le nombre d'éléments, et Item indiquant un membre spécifique par un index ou son nom.

Il est possible de parcourir les objets d'une collection par l'intermédiaire d'un instruction de boucles For Each...Next.

For Each Objet In Collection
  ' Instructions...
Next

3.1 / La collection ADO Errors

La collection ADO Errors contient tous les objets Error créés en réponse à un seul échec relatif au fournisseur.

Objet_Connection.Errors.Propriété | Méthode

Seul l'objet Connection permet d'accéder à la collection Errors. Bien que paraissant restrictif, il n'est pas obligatoire de faire appel à un objet Connection explicite puisque la propriété ActiveConnection des objets Command, Record ou Recordset autorise l'accès à la collection Errors.

Objet.ActiveConnection.Errors

Lorsqu'une seconde erreur relative à un autre objet ADO intervient, la collection Errors est réinitialisée et à nouveau remplie par les caractéristiques de la nouvelle erreur.

Le fournisseur OLE DB peut également insérer des informations ou des avertissements à l'index zéro de la collection Errors.

Les Propriétés
Propriété
Description
Errors.Count
indique le nombre d'objets Error d'une collection.
Errors.Item(Index)
retourne un élément de la collection.
Les Méthodes
Méthode
Description
Errors.Clear
supprime tous les objet Error de la collection.
Errors.Refresh
met à jour les objets Error dans la collection afin de reflèter les objets disponibles à partir du fournisseur et propre à ce-dernier.
Exemple [voir]
<html>
  <head>
  <%
      Function Verif_coll_Errors(obj_Connection)
      Dim obj_Error
      If Err.Number <> obj_Connection.Errors(0).Number Then
        Exit Function
      End If
      If obj_Connection.Errors.Count > 0 Then
        For Each obj_Error in obj_Connection.Errors
        If obj_Error.Number <> 0 Then
          Response.Write "" & _
            "<table border="0" cellpadding=1 cellspacing=2 border=1>" & _
            "<tr><th>Propriété</th><th>Valeur</th>" & _
            "</tr><tr><th>Numéro</th><td>" & obj_Error.Number & "</td></tr>" & _
            "<tr><th>Erreur native</th><td>" & obj_Error.NativeError & "</td></tr>" & _
            "<tr><th>Etat SQL</th><td>" & obj_Error.SQLState & "</td></tr>" & _
            "<tr><th>Source</th><td>" & obj_Error.Source & "</td></tr>" & _
            "<tr><th>Description</th><td>" & obj_Error.Description & "</td></tr>" & _
            "</table>"
          Verif_coll_Errors = True
        End If
        Next
      Else
        Verif_coll_Errors = False
      End If
      End Function

      On Error Resume Next
  %>
  </head>
  <body>
  <%
      Dim Ch_SQL
      Ch_SQL = "SELECT Noms, Prenom, Age, Qualites, eMail, Adresse" _
             & "FROM Fiche","DSN=personnel"
      Set obj_Recordset = Server.CreateObject("ADODB.Recordset")
      obj_Recordset.Open Ch_SQL
        If Verif_coll_Errors(obj_Recordset.ActiveConnection) = False Then
  %>
        <table border="1" cellpadding="3" align="center">
        <tr>
          <td colspan="6">Fiches signalétiques des personnels</td>
        </tr>
        <tr>
          <td>Nom</td>
          <td>Prénom</td>
          <td>Age</td>
          <td>Qualité</td>
          <td>eMail</td>
          <td>Adresse</td>
        </tr>
  <%
        Do While Not obj_Recordset.EOF
  %>
        <tr>
          <td><%=obj_Recordset("Nom")%></td>
          <td><%=obj_Recordset("Prenom")%></td>
          <td><%=obj_Recordset("Age")%></td>
          <td><%=obj_Recordset("Qualite")%></td>
          <td><%=obj_Recordset("eMail")%></td>
          <td><%=obj_Recordset("Adresse")%></td>
        </tr>
  <%
        obj_Recordset.MoveNext
        Loop
        End If
      obj_Recordset.Close
      Set obj_Recordset = Nothing
  %>
      </tr>
  </table>
  </body>
</html>

3.2 / La collection ADO Fields

La collection ADO Fields contient tous les objets Field correspondant chacun à une colonne d'un jeu d'enregistrements (Recordset) ou d'un seul enregistrement (Record).

Set objet_Fields = objet_Recordset.Fields

L'extraction des valeurs de champs peut s'effectuer de différentes façons. Cependant, si la position des champs est connue dans la table de données, l'accès par un index reste la méthode la plus performante.

objet_Field = obj_Recordset.Fields.Item("Nom_Champ")
objet_Field = obj_Recordset.Fields("Nom_Champ")
objet_Field = obj_Recordset("Nom_Champ")
objet_Field = obj_Recordset.Fields.Item(Index)
objet_Field = obj_Recordset.Fields(Index)
objet_Field = obj_Recordset(Index)

Dans le cas de données structurées comme des bases de données SQL, la colletion Fields contient des enregistrements (objets Field) correspondant à des colonnes de données et contiennent des informations relatives aux colonnes telles que leur type de données, leur taille, leur nom, etc..

Dans le cas de données semi-structurées comme un système de fichiers, la collection Fields correspond à l'ensemble des propriétés de l'objet. Ainsi, chaque propriété à l'image ddu nom, de la taille, des attributs etc. constitue un enregistrement spécifique dans la collection.

Les Propriétés
Propriété
Description
Fields.Count
indique le nombre d'objets Field d'une collection.
Fields.Item(Index)
retourne un élément de la collection.
Les Méthodes
Méthode
Description
Fields.Append Nom_Field, Type, Taille_Champs, FieldAttributeEnum, Valeur
ajoute un objet à une collection.
Fields.CancelUpdate
annule toutes les modifications apportées à l'enregistrement en cours ou à un nouvel enregistrement avant d'appeler la méthode Update
Fields.Delete Field
supprime un objet de la collection.
Fields.Refresh
met à jour les objets d'une collection afin de reflèter les objets disponibles à partir du fournisseur et spécifique à ce-dernier.
Fields.Resync ResyncEnum
actualise les données de l'objet Recordset en cours à partir de la base de données sous-jacente.
Fields.Update Fields, Valeurs
sauvegarde les modifications apportées à l'enregistrement en cours d'un objet Recordset.
Exemple [voir]
<html>
  <body>
  <%
      Set obj_Recordset = Server.CreateObject("ADODB.Recordset")
      obj_Recordset.Open "Select * from Fiche","DSN=personnel"
      With Obj_Recordset
        Compteur = .Fields.Count - 1
  %>
  <table border="1" cellpadding="3" align="center">
      <tr>
        <td colspan="7">Fiches signalétiques des personnels</td>
      </tr>
      <tr>
        <td>N°</td>
        <td>Nom</td>
        <td>Prénom</td>
        <td>Age</td>
        <td>Qualité</td>
        <td>eMail</td>
        <td>Adresse</td>
      </tr>
        <%
        Dim i
        Do While Not .EOF
        %>
        <tr>
        <%
          For i = 0 To Compteur
        %>
            <td><%=.Fields.Item(i)%></td>
        <%
          Next
        %>
        </tr>
        <%
            .MoveNext
          Loop
          .Close
        End With
        Set obj_Recordset = Nothing
        %>
      </tr>
  </table>
  </body>
</html>

3.3 / La collection ADO Parameters

La collection ADO Parameters contient tous les objets Parameter d'un objet Command.

Parameters.Propriété | Méthode

Les paramètres sont généralement utilisées avec des procédures stockées dans des bases de données SQL et dans ce cas fonctionnent comme des arguments transmettant leur valeur à une fonction ou une procédure SQL.

La création des paramètres passe par l'objet Command associé à sa méthode CreateParameter.

Set Objet_Parameter = _
  Objet.Command.CreateParameter(Nom, Type, Direction, Taille, Valeur)

Ensuite, il ne reste plus qu'à insérer les paramètres ainsi créés dans le collection Parameters par l'intermédiaire de sa méthode Append.

Objet_Command.Parameters.Append Objet_parameter

L'accès à la valeur d'un paramètre précis peut s'effectuer soit par son nom ou son index à partir de la collection.

Valeur = Object_Command.Parameters(Index)
Valeur = Object_Command.Parameters("Nom")

Enfin, il est également possible de modifier la valeur d'un paramètre de la même façon.

Object_Command.Parameters(Index) = Valeur
Object_Command.Parameters("Nom") = Valeur

L'index de la collection Parameter commençant par la valeur zéro, le premier paramètre est accessible à partir de zéro.

Les Propriétés
Propriété
Description
Parameters.Count
indique le nombre d'objets Parameter d'une collection.
Parameters.Item(Index)
retourne un élément de la collection.
Les Méthodes
Méthode
Description
Fields.Append Nom_Field, Type, Taille_Champs, FieldAttributeEnum, Valeur
ajoute un objet à une collection.
Parameters.Delete Nom_Field
supprime un objet de la collection.
Parameters.Refresh
met à jour les objets Parameter dans la collection afin de reflèter les objets disponibles à partir du fournisseur et propre à ce-dernier.
Exemple [voir]
<html>
  <body>
  <%
      Function Verif_coll_Errors(oConn)
      Dim obj_Error
      If Err.Number <> oConn.Errors(0).Number Then
        Exit Function
      End If
      If oConn.Errors.Count > 0 Then
        For Each obj_Error in obj_Connection.Errors
        If obj_Error.Number <> 0 Then
          Response.Write "" & _
            "<table border="0" cellpadding=1 cellspacing=2 border=1>" & _
            "<tr><th>Propriété</th><th>Valeur</th>" & _
            "</tr><tr><th>Numéro</th><td>" & obj_Error.Number & "</td></tr>" & _
            "<tr><th>Erreur native</th><td>" & obj_Error.NativeError & "</td></tr>" & _
            "<tr><th>Etat SQL</th><td>" & obj_Error.SQLState & "</td></tr>" & _
            "<tr><th>Source</th><td>" & obj_Error.Source & "</td></tr>" & _
            "<tr><th>Description</th><td>" & obj_Error.Description & "</td></tr>" & _
            "</table>"
          Verif_coll_Errors = True
        End If
        Next
      Else
        Verif_coll_Errors = False
      End If
      End Function

      On Error Resume Next

      Dim adCmdStoredProc
      Dim adInteger
      Dim adVarChar
      Dim adParamInput
      adCmdStoredProc = 4
      adInteger = 3
      adVarChar = 200
      adParamInput = 1

      Set obj_Connection = Server.CreateObject("ADODB.Connection")
      obj_Connection.Open "dsn=librairie"

      Set obj_Command = Server.CreateObject("ADODB.Command")
      Set obj_Parameter = Server.CreateObject("ADODB.Parameter")
      Set obj_Recordset = Server.CreateObject("ADODB.Recordset")

      Set obj_Command.ActiveConnection = obj_Connection
      obj_Command.CommandText = "choixlivre"
      obj_Command.CommandType = adCmdStoredProc

      obj_Parameter.Name = "Editeur"
      obj_Parameter.Type = adVarChar
      obj_Parameter.Direction = adParamInput
      obj_Parameter.Size = 255
      obj_Parameter.Value = "EYROLLES"
      obj_Command.Parameters.Append obj_Parameter

      Set obj_Parameter = _
        obj_Command.CreateParameter("Categorie",adInteger,adParamInput,,2)
      obj_Command.Parameters.Append obj_Parameter

      Set obj_Recordset = obj_Command.Execute

      If Verif_coll_Errors(obj_Connection) = False Then
        Compteur = obj_Recordset.Fields.Count - 1
  %>
  <table border="1" cellspacing="1" cellpadding="2">
      <tr>
        <th colspan="5">Sélection de la cétégorie n°
        <%=obj_Command.Parameters.Item("Categorie").Value%>
          et de l'éditeur 
        <%=obj_Command.Parameters.Item("Editeur").Value%>
        </th>
      </tr>
      <tr>
       <th>Livre</th>
       <th>Collection</th>
       <th>Editeur</th>
       <th>Catégorie</th>
       <th>Prix</th>
      </tr>
  <%
        Do While Not obj_Recordset.EOF
  %>
        <tr>
        <%
          For i = 0 To Compteur
        %>
            <td><%=obj_Recordset.Fields.Item(i)%></td>
        <%
          Next
        %>
        </tr>
  <%
        obj_Recordset.MoveNext
        Loop
      End If

      obj_Recordset.Close
      Set obj_Recordset = Nothing
      Set obj_Parameter = Nothing
      Set obj_Command = Nothing
      obj_Connection.Close
      Set obj_Connection = Nothing
  %>
  </table>
  </body>
</html>
<!-- Requête paramétrée dans les requêtes de la base de données : choixlivre -->
PARAMETERS NomEditeur Text ( 255 ), CodeCategorie Long;
SELECT l.nom, l.collection, l.Editeur, c.nom, l.euros
FROM livre AS l INNER JOIN categorie AS c ON l.clecategorie=c.numcategorie
WHERE (((l.editeur)=[NomEditeur]) AND ((c.numcategorie)=[CodeCategorie]))
ORDER BY l.nom;

3.4 / La collection ADO Properties

La collection ADO Properties contient tous les objets Property d'une instance d'objet.

Properties.Propriété | Méthode

Les objets ADO, Connection, Command, Recordset, Record, et Field possèdent une collection Properties constituée d'objets Property,. Chacun de ces-derniers correspond à une caractéristique de l'objet ADO, spécifique au fournisseur.

ADO fonctionnant avec différents types de sources de données, la collection Properties devient dynamique, puisque chacun de ses objets Property sont susceptibles de varier selon le fournisseur OLE DB sollicité.

Les propriétés dynamiques sont disponibles à partir de l'une ou l'autre des expressions suivantes :

Objet.Properties(Index)
Objet.Properties("Nom")
Les Propriétés
Propriété
Description
Properties.Count
indique le nombre d'objets Property d'une collection.
Properties.Item(Index)
retourne un élément de la collection.
Les Méthodes
Méthode
Description
Properties.Refresh
met à jour les objets Property dans la collection afin de reflèter les objets disponibles à partir du fournisseur et propre à ce-dernier.
Exemple [voir]
<html>
  <body>
  <%
      Dim obj_Connection
      Dim obj_Recordset
      Dim ch_Source
      Dim ch_SQL

      set obj_Connection=server.CreateObject("ADODB.connection")
      ch_Source = "Provider=Microsoft.Jet.OLEDB.4.0"
      ch_Source = ch_Source & "; Data Source=C:\Base_donnee\Personnel.mdb"
      obj_Connection.connectionstring = ch_Source
      obj_Connection.Open

      set obj_Recordset = server.CreateObject("ADODB.recordset")
      ch_SQL = "SELECT Nom, Prenom FROM Fiche;"
      obj_Recordset.Open ch_SQL,obj_Connection
      Response.Write "<h3>Personnels :</h3>"
      Do until obj_Recordset.EOF
        Response.Write "<b>" & obj_Recordset("Nom") & "</b> " _
                    & obj_Recordset("Prenom") & "<br>"
        obj_Recordset.MoveNext
      Loop

      Response.Write "<h3>Propriétés de l'objet Connection :</h3>" _
      & "<table border=1>" _
      & "<tr><th>N°</th>" _
      & "<th>Type</th>" _
      & "<th>Attribut</th>" _
      & "<th>Nom</th>" _
      & "<th>Valeur</th></tr>"
      dim i
      i = 0
      for each obj_Property in obj_Connection.Properties
        i = i + 1
        Response.Write "<tr><td>" & i & "</td>"
        Response.Write "<td>" & obj_Property.type  & "</td>"
        Response.Write "<td>" & obj_Property.attributes & "</td>"
        Response.Write "<td>" & obj_Property.name  & "</td>"
        Response.Write "<td>" & obj_Property.value  & "</td></tr>"
      Next
      Response.Write "</table>"
  %>
  </body>
</html>

4 / Les types de curseurs

Un curseur représente un moyen de déplacer un pointeur, d'un enregistrement à un autre dans un objet Recordset.

ADO définit quatre types de curseurs, dont les principales différences résident d'une part, dans le mode de déplacement aussi bien en avant qu'en arrière, et d'autre part dans la visibilité ou l'occultation des jeux d'enregistrements sur lesquels des actions ont été opérés, pour les autres utilisateurs.

TypeConstante
Description
DynamicadOpenDynamic (1)
permet de rendre visible les ajouts, les changements et les suppressions aux autres utilisateurs, et également tous les modes de déplacement à l'intérieur d'un objet Recordset ne dépendant pas de signets.
KeysetadOpenKeyset (2)
se comporte comme un curseur dynamique, hormis qu'il empêche de rendre visible les enregistrements ajoutés par des utilisateurs, et empêche l'accès aux enregistrements que d'autres utilisateurs suppriment. Les données modifiées par d'autres utilisateurs restent toujours visibles. Il permet tous les modes de mouvement à l'intérieur d'un jeu d'enregistrements.
StaticadOpenStatic (3)
fournit une copie statique d'un jeu d'enregistrements utilisé pour rechercher des données ou générer des rapports. Tous les types de mouvement sont autorisés à l'intérieur d'un objet Recordset. Ajout, modification et suppression par d'autres utilisateurs restent toujours invisibles. Il est le seul type de curseur autorisé lors de l'ouverture d'un objet Recordset côté-client.
Forward-onlyadOpenForwardOnly (4)
permet seulement un défilement vers l'avant à l'intérieur d'un objet Recordset. Les ajouts, les modifications ou les suppressions par d'autres utilisateurs ne restent pas visibles. Il améliore les performances dans des situations où il est nécessaire d'effectuer un unique passage à l'intérieur d'un objet Recordset.

Il faut choisir le type de curseur par l'intermédiaire de la propriété CursorType avant l'ouverture de l'objet Recordset, ou de la méthode Open en passant un argument CursorType.

Plusieurs fournisseurs ne supportent pas tous les types de curseurs. Par défaut, ADO utilise le type de curseur forward-only en principe reconnu par tous.

5 / Les constantes ADO

Les constantes permettent de définir différentes caractéristiques prédéfinies pour les méthodes et propriétés des objets ADO.

5.1 / Les constantes AffectEnum

Les constantes AffectEnum indique quels enregistrements sont affectés par une opération.

Objet_Recordset.CancelBatch AffectEnum
Constante Valeur Description
adAffectAll 3 affecte tous les enregistrements s'il n'y a aucun filtre appliqué à l'objet Recordset, si la propriété Filter n'est pas fixée à un critère de chaîne de caractères, alors l'opération affecte tous les enregistrements visibles dans le chapitre courant. Si la propriété Filter a un membre des constantes FilterGroupEnum ou un tableau de signets, alors l'opération affecterait toutes les lignes de l'objet Recordset.
adAffectAllChapters 4 affecte tous les enregistrements dans tous les chapitres de mêmes parents de l'objet Recordset incluant ceux non-visibles via n'importe quel propriété Filter qui est couramment appliqué.
adAffectCurrent 1 affecte seulement l'enregistrement courant.
adAffectGroup 2 affecte seulement les enregistrements qui satisfont le paramètrage courant de la propriété Filter. Il faut fixer la propriété Filter à une valeur FilterGroupEnum ou un tableau de signets pour utiliser cette option.

5.2 / Les constantes BookmarkEnum

Les constantes BookmarkEnum spécifient un signet indiquant où l'opération doit débuter.

Objet_Recordset.Move Nb_Enregistrements, BookmarkEnum
Constante Valeur Description
adBookmarkCurrent 0 démarre à partir de l'enregistrement courant.
adBookmarkFirst 1 démarre à partir du premier enregistrement.
adBookmarkLast 2 démarre à partir du dernier enregistrement.

5.3 / Les constantes CommandTypeEnum

Les constantes CommandTypeEnum sont des valeurs représentant comment un argument pourrait être interprété.

Object_Command.CommandType = CommandTypeEnum
Constante Valeur Description
adCmdUnspecified -1 ne peut spécifier l'argument de type de commande.
adCmdText 1 évalue CommandText comme une définition textuelle d'une commande ou d'un appel d'une procédure stockée.
adCmdTable 2 évalue CommandText comme une table de noms dont les colonnes sont toutes retournées par une requête SQL générée intérieurement.
adCmdStoredProc 4 évalue CommandText comme une procédure de nom stockée.
adCmdUnknown 8 indique, par défaut, que le type de la commande dans la propriété CommandText n'est pas connue.
adCmdFile 256 évalue CommandText comme le nom de fichier d'un jeu d'enregistrements stockés avec persistance.
adCmdTableDirect 512 évalue CommandText comme un nom de table dont les colonnes sont toutes retournées.

5.4 / Les constantes CompareEnum

Les constantes CompareEnum indique la position relative de deux enregistrements par leur signet.

Objet_Recordset.CompareBookmarks Signet, Signet2 = _
                                                                        CompareEnum
Constante Valeur Description
adCompareEqual 1 indique que les signets sont égaux.
adCompareGreaterThan 2 indique que le premier signet est après le second.
adCompareLessThan 0 indique que le premier signet est avant le second.
adCompareNotComparable 4 indique que les signets ne peuvent être comparés.
adCompareNotEqual 3 indique que les signets ne sont pas égaux et non ordonnés.

5.5 / Les constantes ConnectModeEnum

Les constantes ConnectModeEnum indique les permissions disponibles pour la modification des données dans un objet Connection, pour l'ouverture d'un enregistrement Record, ou pour la spécification des valeurs pour la propriété Mode des objets Record et Stream.

Objet_Connection.Mode = ConnectModeEnum
Constante Valeur Description
adModeRead 1 indique des permissions en lecture seule.
adModeReadWrite 3 indique les permissions le lecture et écriture.
adModeRecursive 0x400000 utilisé en conjonction avec les autres valeurs ShareDeny (adModeShareDenyNone, adModeShareDenyWrite, ou adModeShareDenyRead) pour propager les restrictions de partage à tous les sous-enregistrements de l'objet Record courant. Il n'a pas d'effet si l'enregistrement ne possède pas d'enfants.
adModeShareDenyNone 16 autorise les personnes à ouvrir une connexion avec n'importe quelles permissions. Allows others to open a connection with any permissions. Ni l'accès à la lecture ou à l'écriture ne peuvent être dénié aux personnes.
adModeShareDenyRead 4 empêche les personnes d'ouvrir une connexion avec les permissions de lecture.
adModeShareDenyWrite 8 empêche les personnes d'ouvrir une connexion avec les permissions de écriture.
adModeShareExclusive 12 emêche les personnes d'ouvrir une connexion.
adModeUnknown 0 par défaut, indique que les permissions n'ont pas encore été ou ne peuvent être déterminées.
adModeWrite 2 indique des êrmissions en écriture seule.

5.6 / Les constante CopyRecordOptionsEnum

Les constante CopyRecordOptionsEnum indiquent le comportement de la méthode CopyRecord.

Objet_Record.CopyRecord CopyRecordOptionsEnum
Constante Valeur Description
adCopyAllowEmulation 4 indique que la fournisseur tente de simuler la copie utilisant les opérations de téléchargement si cette méthode échoue suite à une destination sur un différent serveur, ou est servi par un différent fournisseur que la source.
adCopyNonRecursive 2 copie le répertoire courant, mais aucun des ses sous-répertoires, vers la destination. L'opération de copie n'est pas récursive.
adCopyOverWrite 1 recopie le fichier ou le répertoire si la destination pointe vers un dichier ou répertoire existant.
adCopyUnspecified -1 par défaut, exécute l'opération de copie. L'opération échoue si le fichier ou le répertoire de destination existe déjà et l'opération copie récursivement.

5.7 / Les constantes CursorLocationEnum

Les constantes CursorLocationEnum permettent de spécifier la localisation du service de curseur.

Objet_Connection.CursorLocation = CursorLocationEnum
Constante Valeur Description
adUseClient 3 utlise les curseurs du côté client fournis par une librairie de curseurs locale.
adUseNone 1 n'utilise pas de services de curseurs.
adUseServer 2 par défaut, utilise les données du fournisseur ou les pilotes de curseurs fournis.

5.8 / Les constantes CursorOptionEnum

Les constantes CursorOptionEnum spécifient quelle fonctionnalité, la méthode Supports doit évaluer.

Objet_Recordset.Supports(CursorOptionEnum)
Constante Valeur Description
adAddNew 0x1000400 supporte la méthode AddNew pour ajouter de nuveaux enregistrements.
adApproxPosition 0x4000 supporte les propriétés AbsolutePosition et AbsolutePage.
adBookmark 0x2000 supporte la propriété Bookmark pour obtenir des accès aux enregistrements spécifiques.
adDelete 0x1000800 supporte la méthode Delete pour supprimer des enregistrements.
adFind 0x80000 supporte la méthode Find pour localiser une ligne dans un objet Recordset.
adHoldRecords 0x100 retrouve plusieurs enregistrements ou modifie la prochaine position sans exécuter tous les changements en cours.
adIndex 0x100000 supporte la propriété Index pour nommer un index.
adMovePrevious 0x200 supporte les méthodes MoveFirst, MovePrevious et Move ou GetRows pour déplacer la position de l'enregistrement courant en arrière sans demander des signets.
adNotify 0x40000 indique que le fournisseur de données sous-jacent supporte des notifications.
adResync 0x20000 supporte la méthode Resync pour mettre à jour le curseur avec les données qui restent visibles dans la base de données sous-jacente.
adSeek 0x200000 supporte la méthode Seek pour localiser une ligne dans un objet Recordset.
adUpdate 0x1008000 supporte la méthode Update pour modifier les données existantes.
adUpdateBatch 0x10000 supporte les méthodes UpdateBatch et CancelBatch pour envoyer des groupes de changements au fournisseur.

5.9 / Les constantes CursorTypeEnum

Les constantes EditModeEnum spécifient les positions d'édition d'un enregistrement.

Objet_Recordset.EditMode = EditModeEnum
Constante Valeur Description
adEditNone 0 indique que'aucune opération d'édition n'est en cours d'exécution.
adEditInProgress 1 indique que les données dans l'enregistrement courant a été modifié mais pas sauvegardé.
adEditAdd 2 indique que la méthode AddNew a été appelée et l'enregistrement courant dans la copie temporaire est un nouvel enregistrement qui n'a pas été sauvegardé dans la base de données.
adEditDelete 4 indique que l'enregistrement courant a été supprimé.

5.10 / Les constantes DataTypeEnum

Les constantes DataTypeEnum spécifient le type de données des objets Field, Parameter ou Property.

Objet_Field.Type = DataTypeEnum
Constante Valeur Description
AdArray 0x2000 indique une valeur indicatrice toujours combinée avec une autre constante de type de données qui indique un tableau de cette autre type de données.
adBigInt 20 indique un entier signé sur huit octets (DBTYPE_I8).
adBinary 128 indique une valeur binaire (DBTYPE_BYTES).
adBoolean 11 indique une valeur booléenne (DBTYPE_BOOL).
adBSTR 8 indique une chaîne de caractères Unicode null-terminated (DBTYPE_BSTR).
adChapter 136 indique une valeur chapitre sur quatre octets qui identifie les lognes dans un jeu de lignes enfant (DBTYPE_HCHAPTER).
adChar 129 indique une valeur de chaîne de caractères (DBTYPE_STR).
adCurrency 6 indique une valeur monétaire.
adDate 7 indique une valeur de datation (DBTYPE_DATE).
adDBDate 133 indique une valeur de datation (yyyymmdd) (DBTYPE_DBDATE).
adDBTime 134 indique une valeur horaire (hhmmss) (DBTYPE_DBTIME).
adDBTimeStamp 135 indique un type de date/heure stamp (yyyymmddhhmmss) (DBTYPE_DBTIMESTAMP).
adDecimal 14 indique une valeur numérique exacte d'une précision et d'une échelle fixée (DBTYPE_DECIMAL).
adDouble 5 indique une valeur à virgule flottante avec double précision (DBTYPE_R8).
adEmpty 0 ne spécifie pas de valeur (DBTYPE_EMPTY).
adError 10 indique un code d'erreur 32 bit (DBTYPE_ERROR).
adFileTime 64 indique une valeur de 64 bit représentant le nombre de 100 nanosecondes d'intervalle depuis le 1er janvier 1601 (DBTYPE_FILETIME).
adGUID 72 indique un identificateur unique globalement (GUID) (DBTYPE_GUID).
adIDispatch 9 indique un pointeur vers une interface IDispatch sur un objet COM (DBTYPE_IDISPATCH).
adInteger 3 indique un entier signé sur quatre octets (DBTYPE_I4).
adIUnknown 13 indique un pointeur vers une interface IUnknown sur un objet COM (DBTYPE_IUNKNOWN).
adLongVarBinary 205 indique une valeur binaire longue.
adLongVarChar 201 indique une valeur longue de chaîne de caractères.
adLongVarWChar 203 indique une valeur de chaîne de caractères Unicode null-terminated.
adNumeric 131 indique une valeur numérique exacte d'une précision et d'une échelle fixées (DBTYPE_NUMERIC).
adPropVariant 138 indique un Automation PROPVARIANT (DBTYPE_PROP_VARIANT).
adSingle 4 indique une valeur à virgule flottante à précision simple (DBTYPE_R4).
adSmallInt 2 indique un entier signé sur deux octets (DBTYPE_I2).
adTinyInt 16 indique un entier signé sur un octet (DBTYPE_I1).
adUnsignedBigInt 21 indique un entier non-signé sur huit octets (DBTYPE_UI8).
adUnsignedInt 19 indique un entier non-signé sur quatre octets (DBTYPE_UI4).
adUnsignedSmallInt 18 indique un entier non-signé sur deux octets (DBTYPE_UI2).
adUnsignedTinyInt 17 indique un entier non-signé sur un octets (DBTYPE_UI1).
adUserDefined 132 indique une variable définie par l'utilisateur (DBTYPE_UDT).
adVarBinary 204 indique une valeur binaire (objet Parameter seulement).
adVarChar 200 indique une valeur de chaîne de carctères (Objet Parameter seulement).
adVariant 12 indique un variant Automation (DBTYPE_VARIANT).
adVarNumeric 139 indique une valeur numérique (objet Parameter seulement).
adVarWChar 202 indique une chaîne de caractères Unicode null-terminated.
adWChar 130 indique une chaîne de caractères Unicode null-terminated.

5.11 / Les constantes CursorTypeEnum

Les constantes EditModeEnum spécifient les positions d'édition d'un enregistrement.

Objet_Recordset.EditMode = EditModeEnum
Constante Valeur Description
adEditNone 0 indique que'aucune opération d'édition n'est en cours d'exécution.
adEditInProgress 1 indique que les données dans l'enregistrement courant a été modifié mais pas sauvegardé.
adEditAdd 2 indique que la méthode AddNew a été appelée et l'enregistrement courant dans la copie temporaire est un nouvel enregistrement qui n'a pas été sauvegardé dans la base de données.
adEditDelete 4 indique que l'enregistrement courant a été supprimé.

5.12 / Les constantes EventReasonEnum

Les constantes EventReasonEnum spécifient la raison qui a amené un événement à se produire.

Objet_Recordset.RecordChangeComplete EventReasonEnum, 
                         Nb_Records, Erreur, EventStatusEnum, Recordset
Constante Valeur Description
adRsnAddNew 1 indique qu'une opération a ajouté un nouvel enregistrement.
adRsnClose 9 indique qu'une opération a fermé un objet Recordset.
adRsnDelete 2 indique qu'une opération a supprimé un enregistrement.
adRsnFirstChange 11 indique qu'une opération fait la première modification sur un enregistrement.
adRsnMove 10 indique qu'une opération a déplacé le pointeur d'enregistrement à l'intérieur d'un objet Recordset.
adRsnMoveFirst 12 indique qu'une opération a déplacé le pointeur d'enregistrement au premier enregistrement dans l'objet Recordset.
adRsnMoveLast 15 indique qu'une opération a déplacé le pointeur d'enregistrement au dernier enregistrement dans l'objet Recordset.
adRsnMoveNext 13 indique qu'une opération a déplacé le pointeur d'enregistrement au prochain enregistrement dans l'objet Recordset.
adRsnMovePrevious 14 indique qu'une opération a déplacé le pointeur d'enregistrement au précédent enregistrement dans l'objet Recordset.
adRsnRequery 7 indique qu'une opération a demandé l'objet Recordset.
adRsnResynch 8 indique qu'une opération a resynchronisé l'objet Recordset avec la base de données.
adRsnUndoAddNew 5 indique qu'une opération a inversé l'ajout d'un nouvel enregistrement.
adRsnUndoDelete 6 indique qu'une opération a inversé la suppression d'un enregistrement.
adRsnUndoUpdate 4 indique qu'une opération a inversé la mise à jour d'un enregistrement.
adRsnUpdate 3 indique qu'une opération a mis à jour un enregistrement existant.

5.13 / Les constantes EventStatusEnum

Les constantes EventStatusEnum spécifient le statut courant de l'exécution d'un événement.

Objet_Recordset.EndOfRecordset More Data, _
                                                   EventStatusEnum, Recordset
Constante Valeur Description
adStatusCancel 4 demande l'annulation de l'opération qui a provoqué l'événement survenu.
adStatusCantDeny 3 indique que l'opération ne peut demander l'annulation de l'opération en cours.
adStatusErrorsOccurred 2 indique que l'opération qui a provoqué l'événement, a échoué en raison d'une ou plusieurs erreurs.
adStatusOK 1 indique que l'opération qui a provoqué l'événement, a été réussie.
adStatusUnwantedEvent 5 empêche des notification ultérieures avant que la méthode d'événement ait fini son exécution.

5.14 / Les constantes ExecuteOptionEnum

Les constantes ExecuteOptionEnum spécifie comment un fournisseur devrait exécuter une commande.

Objet_Recordset.Open Source, ActiveConnection, _
                  CursorTypeEnum, LockTypeEnum, ExecuteOptionEnum
Constante Valeur Description
adAsyncExecute 0x10 indique que la commande doit s'exécuter d'une manière asynchrone. Cette valeur ne peut être combinée avec la valeur adCmdTableDirect des constantes CommandTypeEnum.+6
adAsyncFetch 0x20 indique que les lignes restantes après la quantité initiale spécifiée dans la propriété CacheSize devrait être retrouvé non-simultanément.
adAsyncFetchNonBlocking 0x40 indique que la principale unité d'exécution ne se bloque jamais tant que l'opération de récupération est en cours. Si les lignes demandées n'ont pas été retrouvées, la ligne courante se déplace automatiquement à la fin du ficher. En ouvrant un objet Recordset à partir d'un objet Stream contenant un objet Recordset stocké avec persistance, elle n'aurait aucun effet, l'opération serait synchrone et bloquée. Egalement, elle n'a pas d'effet lorsque l'option adCmdTableDirect est utilisée pour ouvrir un jeu d'enregistrements.
adExecuteNoRecords 0x80 indique que CommandText est une commande ou une procédure stockée qui ne retourne pas des lignes. Si quelques lignes sont retrouvées, elles sont mises de côté et non retournées. Elle peut seulement être passée comme un paramètre optionnel à la méthode >Execute d'un objet Connection ou Command.
adExecuteStream 0x400 indique que le résultat d'une exécution d'une commande devrait être retourné comme un flux (Stream). Elle est utilisable seulement comme paramètre optionnel de la méthode Execute de l'objet Command.
adExecuteRecord   indique que CommandText est une commande ou une procédure stockée qui retourne une unique ligne qui devrait être retournée comme un objet Record.
adOptionUnspecified -1 indique que la commande est non-spécifiée.

5.15 / Les constantes FieldAttributeEnum

Les constantes FieldAttributeEnum spécifient un ou plusieurs attributs d'un objet Field.

Fields.Append Nom_Field, Type, Taille_Champs, _
                        FieldAttributeEnum, Valeur
Constante Valeur Description
adFldCacheDeferred 0x1000 indique que le fournisseur stocke en mémoire les valeurs de champs et les lectures ultérieures sont effectuées à partir de la émoire cache.
adFldFixed 0x10 indique que le champ contient des données d'une longueur fixées.
adFldIsChapter 0x2000 indique que le champ contient une valeur de chapitre, laquelle indique une valeur spécifique d'un objet Recordset enfant lié à ce champ parent. caractéristiquement, les champs de chapitre sont utilisés avec la formation de données ou les filtres.
adFldIsCollection 0x40000 indique que le champ spécifie que la ressource représentée par l'enregistrement est une collection d'autres ressources, comme un répertoire, plutôt qu'une simple ressource comme un fichier texte.
adFldIsDefaultStream 0x20000 indique que le champ contient l'objet Stream par défaut pour la ressource représentée par l'enregistrement.
adFldIsNullable 0x20 indique que le champ accepte des valeurs nulles.
adFldIsRowURL 0x10000 indique que le champ contient l'URL qui nomme la ressource à partir des données stockées par l'enregistrement.
adFldLong 0x80 indique que le champ est un champ binaire de type Long et qu'il est possible d'utiliser les méthodes AppendChunk et GetChunk.
adFldMayBeNull 0x40 indique qu'il est possible de lire des valeurs nulles à partir des champs.
adFldMayDefer 0x2 indique que le champ est renvoyé, les valeurs de champ ne sont pas retrouvées à partir de la source de données avec l'enregistrement entier, mais seulement lors de leur accès explicite.
adFldNegativeScale 0x4000 indique que le champ représente une valeur numérique d'une colonne qui supporte des valeurs d'échelle négatives. L'échelle est spécifiée par la propriété NumericScale.
adFldRowID 0x100 indique que le champ contient un identificateur de ligne persistant qui ne peut être accédé en écriture et n'a aucune valeur significative sauf pour identifier la ligne.
adFldRowVersion 0x200 indique que le champ contient plusieurs types de date ou d'heure utilisés pour suivre à la trace des mises à jour.
adFldUnknownUpdatable 0x8 indique que le fournisseur ne peut déterminer s'il est possible d'écrire sur l'enregistrement.
adFldUnspecified -1 0xFFFFFFFF indique que le fournisseur ne spécifie pas les attributs de champs.
adFldUpdatable 0x4 indique que vous pouvez écrire sur l'enregistrement.

5.16 / Les constantes FieldStatusEnum

Les constantes FieldStatusEnum indiquent le statut d'un objet Fields.

FieldStatusEnum = Objet.Status
Constante Valeur Description
adFieldAlreadyExists 26 indique que le champ spécifié existe toujours.
adFieldBadStatus 12 indique qu'une valeur de statut invalide a été envoyé d'ADO vers le fournisseur OLE DB.
adFieldCannotComplete 20 indique que le serveur de l'URL spécifiée par la source Indicates that the server of the URL specified by Source n'a pu achever l'opération.
adFieldCannotDeleteSource 23 indique que durant une opération de déplacement, une arborescence ou un sous-arbrescence a été déplacée à un nouvel endroit, mais la source n'a pas pu être effacée.
adFieldCantConvertValue 2 indique que le champ ne peut être récupéré ou stocké sans une perte de données.
adFieldCantCreate 7 indique que le champ n'a pas pu être ajouté car le fournisseur a dépassé une limitation.
adFieldDataOverflow 6 indique que les données retournées à partir du fournisseur ont débordées du type de données du champ.
adFieldDefault 13 indique que la valeur par défaut pour le champ a été utilisé lorsque les données ont été fixées.
adFieldDoesNotExist 16 indique que le champ spécifié n'existe pas.
adFieldIgnore 15 indique que le champ a été évité en fixant les valeurs de données dans la source.
adFieldIntegrityViolation 10 indique que le champ ne peut pas être modifié car il est une entité calculée ou dérivée.
adFieldInvalidURL 17 indique que l'URL de la source de données contient des caractères invalides.
adFieldIsNull 3 indique que le fournisseur a rettourné une valeur nulle.
adFieldOK 0 par défaut indique que le champ a été ajouté ou supprimé avec succès.
adFieldOutOfSpace 22 indique que le fournisseur est incapable d'obtenir suffisamment d'espace de stockage pour finir une opération de déplacement ou de copie.
adFieldPendingChange   indique soit que le champ a été supprimé et alors réajouté avec probablement un autre type de données, ou que la valeur du champ qui avait précédemment un statut adFieldOK, ait changé.
adFieldPendingDelete 0x20000 indique que l'opération de suppression a provoqué que le statut a été fixé.
adFieldPendingInsert 0x10000 indique que l'opération Append a provoqué que le statut a été fixé.
adFieldPendingUnknown 0x80000 indique que le fournisseur ne peut déterminer quel opération a provoqué que le statut a été fixé.
adFieldPendingUnknownDelete 0x100000 indique que le fournisseur ne peut déterminer quel opération a provoqué que le statut a été fixé et que le champ and that the field will be deleted from the Fields collection after the Update method is called.
adFieldPermissionDenied 9 Indicates that the field cannot be modified because it is defined as read-only.
adFieldReadOnly 24 indique que le champ dans la source de onnées est défini en lecture seule.
adFieldResourceLocked 18 indique que le fournisseur a été incapable d'exécuter les opérations car la source de onnées est verrouillée par une ou plusieurs autres applications ou processus.
adFieldResourceOutOfScope 25 indique qu'une source ou une URL de destination est en dehors de la portée de l'enregistrement courant.
adFieldSchemaViolation 11 indique que la valeur violée le schéma de contraintes de la source de données ppour le champ.
adFieldSignMismatch 5 indique que la valeur de données retournée par le fournisseur a été signée, mais le type de données de la valeur de champ d'ADO était non signée.
adFieldTruncated 4 indique que les données de longueur variable ont été tronquées en lisant à partir de la source de données.
adFieldUnavailable 8 indique que le founisseur n'a pas pu déterminer la valeur lors d'une lecture sur la source de données.
adFieldVolumeNotFound 21 indique que le fournisseur est incapable de localiser le volume de stockage indiqué par l'URL.

5.17 / Les constantes FilterGroupEnum

Les constantes FilterGroupEnum indique les groupes d'enregistrements devant être filtré à partir d'un objet Recordset.

Objet_Recordset.Filter = FilterGroupEnum
Constante Valeur Description
adFilterAffectedRecords 2 filtre pour voir essentiellement les enregistrements affectés par les derniers appels à Delete, Resync, UpdateBatch ou CancelBatch.
adFilterConflictingRecords 5 filtre pour voir les enregistrements qui sont en échec lors de la dernière mise à jour de groupe.
adFilterFetchedRecords 3 filtre pour voir les enregistrements dans le cache courant qui est le résultat du dernier appel pour retrouver les enregistrements à partir de la base de données.
adFilterNone 0 enlève le filtre courant et restaure tous les enregistrements pour les voir.
adFilterPendingRecords 1 filtre pour voir seulement les enregistrements qui ont été modifiés mais n'ant pas encore été envoyés sur le serveur. Il est applicable seulement pour le mode de mises à jour par lot.

5.18 / La constante GetRowsOptionEnum

La constante GetRowsOptionEnum spécifie combien d'enregistrements à retrouver à partir d'un objet Recordset.

Objet_Recordset.GetRows(GetRowsOptionEnum, _
                               BookmarkEnum, Enregistrements)
Constante Valeur Description
adGetRowsRest -1 retrouve le reste des enregistrements dans l'objet Recordset à partir soit de la position courante, soit d'un signet spécifié par le paramètre BookmarkEnum de la méthode GetRows.

5.19 / Les constantes IsolationLevelEnum

Les constantes IsolationLevelEnum indique le niveau d'isolation de transaction pour un objet Connection.

Objet_Connection.IsolationLevel = IsolationLevelEnum
Constante Valeur Description
adXactUnspecified -1 indique que le fournisseur utilise un niveau d'isolation différent que celui indiqué, mais que le niveau ne peut être déterminé.
  16 indique que des changements en suspens de plusieurs transactions fortement isolées ne peuvent être recopiés.
adXactBrowse 256 indique qu'à partir d'une transaction, vous pouvez voir des changements non engagés d'autres transactions.
adXactReadUncommitted 256 identique à adXactBrowse.
adXactCursorStability 4096 indique qu'à partir d'une transaction, vous pouvez voir les changements d'autres transactions seulement après avoir été engagées.
adXactReadCommitted 4096 identique à adXactCursorStability.
adXactRepeatableRead 65536 indique qu'à partir d'une transaction, vous ne pouvez voir les changments opérés dans d'autres transactions, mais que des requêtes peuvent récupérer de nouveaux objets Recordset.
adXactIsolated 1048576 indique que des transactions sont menées dans l'isolation d'autres transactions.
adXactSerializable 1048576 identique à adXactIsolated.

5.20 / Les constantes LineSeparatorsEnum

Les constantes LineSeparatorsEnum indiquent le caractère à utiliser comme séparateur de ligne dans le texte d'un objet Stream.

Objet_Stream.LineSeparator = LineSeparatorsEnum
Constante Valeur Description
adCR 13 indique un retour charriot.
adCRLF -1 par défaut, indique un retour charriot et un saut de ligne.
adLF 10 indique un saut de ligne.

5.21 / Les constantes LockTypeEnum

Les constantes LockTypeEnum indique le type de verrou placé sur les enregistrements durant l'opération d'édition.

Objet_Recordset.LockType = LockTypeEnum
Constante Valeur Description
adLockBatchOptimistic 4 indique les mises à jour par lot optimistes. Requis pour le mode de mise à jour par lot.
adLockOptimistic 3 indique le verrouillage optimiste, enregistrement par enregistrement. Le fournisseur utlise le verouillage optimiste, verrrouillant seulement lors d'un appel de la méthode Update.
adLockPessimistic 2 indique le verrouillage optimiste, enregistrement par enregistrement. Le fournisseur fait qu'il est nécessaire d'assurer le succès de l'édition des enregistrements, habituellement par le verrouillage des enregistrements de la source de données immédiatement après l'opération d'édition.
adLockReadOnly 1 indique que les enregistrements sont en lecture seule. Il est donc impossible de modifier les données.
adLockUnspecified -1 ne spécifie pas un type de verrou. Pour des doubles, le double est créé avec le même type de verrou que l'enregistrement original.

5.22 / Les constantes MarshalOptionsEnum

Les constantes MarshalOptionsEnum indique quels enregistrements devraient être retournés au serveur.

Objet_Recordset.MarshalOptions = MarshalOptionsEnum
Constante Valeur Description
adMarshalAll 0 Default. Returns all rows to the server.
adMarshalModifiedOnly 1 Returns only modified rows to the server.

5.23 / Les constantes MoveRecordOptionsEnum

Les constantes MoveRecordOptionsEnum indiquent le comportement de la méthode MoveRecord de l'objet Record.

Objet_Record.MoveRecord(Source, Destination, _
                       Nom_Utilisateur, Mot_Passe, _
                       MoveRecordOptionsEnum, Bool_Asynchrone)
Constante Valeur Description
adMoveUnspecified -1 par défaut, exécute l'opération de déplacement. L'opération échoue si le fichier ou le répertoire de destination existe déjà et l'opération met à jour les liens hypertextes.
adMoveOverWrite 1 recopie le fichier ou le répertoire de destination, même s'il existe déjà.
adMoveDontUpdateLinks 2 modifie le comportement de la méthode MoveRecord par défaut par une non-mise à jour des liens hypertextes de l'enregistrement source. Le comportement par défaut dépend des capacités du fournisseur. L'opération de déplacement met à jour les liens si le fournisseur en est capable. Si le fournisseur ne peut fixer les liens ou si cette valeur n'est pas spécifiée, alors le déplacement réussit même lorsque les liens n'ont pas été fixés.
adMoveAllowEmulation 4 demande que le fournisseur tente de simuler le mouvement. Si la tentative de déplacer l'enregistrement échoue parceque l'URL de destination est sur un serveur différent ou servi par un fournisseur différent que la source, ceci peut provoquer l'accroissement de latence ou la perte de données suite à des capacités de fournisseur différentes en déplaçant de ressources entre des fournisseurs.

5.24 / Les constantes ObjectStateEnum

Les constantes ObjectStateEnum représente l'état d'un objet, c'est-à-dire s'il est ouvert ou fermé, connecté à la source de donées, en exécution d'une commande ou en recherche de données.

Object_Command.State = ObjectStateEnum
Constante Valeur Description
adStateClosed 0 indique que l'objet est fermé.
adStateOpen 1 indique que l'objet est ouvert.
adStateConnecting 2 indique que l'objet est connecté.
adStateExecuting 4 indique que l'objet exécute une commande.
adStateFetching 8 indique que les lignes de l'objet ont été retrouvées.

5.25 / Les constantes ParameterDirectionEnum

Les constantes ParameterDirectionEnum indiquent si l'objet Parameter représente un paramètre entrée, un paramètre produit, les deux, ou la valeur retournée à partir d'une procédure stockée.

FieldStatusEnum = Objet.Status
Constante Valeur Description
adParamInput 1 par défaut, indique que le paramètre représente un paramètre entrée.
adParamInputOutput 3 indique que le paramètre représente un paramètre entrée et produit.
adParamOutput 2 indique que le paramètre représente un paramètre produit.
adParamReturnValue 4 indique que le paramètre représente une valeur retournée.
adParamUnknown 0 indique que la direction de paramètre est inconnue.

5.26 / Les constantes PersistFormatEnum

Les constantes PersistFormatEnum spécifient le format de sauvegarde d'un objet Recordset.

bjet_Recordset.Save Destination, PersistFormatEnum
Constante Valeur Description
adPersistADTG 0 indique le format Microsoft Advanced Data TableGram (ADTG).
adPersistADO 1 indique le format XML propre à ADO est employé. cette valeur est identique à adPersistXML et est incluse pour une compatibilité descendante.
adPersistXML 1 indique le format XML (Extensible Markup Language).
adPersistProviderSpecific 2 indique que le fournisseur continue à utiliser le propre format de l'objet Recordset.

5.27 / Les constantes PositionEnum

Les constantes PositionEnum spécifient la position courante du pointeur d'enregistrement à l'intérieur d'un objet Recordset.

Objet_Recordset.AbsolutePage = PositionEnum
Constante Valeur Description
adPosBOF -2 indique que le pointeur d'enregistrement est à BOF (Before Of File).
adPosEOF -3 indique que le pointeur d'enregistrement est à EOF (End Of File).
adPosUnknown -1 indique que l'objet Recordset est vide, la position courante est inconnue ou le fournisseur ne supporte pas les propriétés AbsolutePage ou AbsolutePosition.

5.28 / Les constantes RecordCreateOptionsEnum

Les constantes RecordCreateOptionsEnum spécifient si un enregistrement existant doit être ouvert ou un nouvel enregistrement doit être creéé par la méthode Open de l'objet Record. Les valeurs peuvent être combinées avec l'opérateur AND.

Objet_Record.Open Source, ActiveConnection, 
                 RecordCreateOptionsEnum, RecordOpenOptionsEnum,
                 Nom_Utilisateur, Mot_Passe
Constante Valeur Description
adCreateCollection 0x2000 crée un nouvel enregistrement au noeud spécifié par le paramètre Source. Si la source pointe vers un noeud existant, alors une erreur de type run-time se produit, à moins que adCreateCollection soit combiné avec adOpenIfExists ou adCreateOverwrite.
adCreateNonCollection 0 crée un nouvel enregistrement de type adSimpleRecord.
adCreateOverwrite 0x4000000 modifie les indicateurs de création adCreateCollection, adCreateNonCollection, et adCreateStructDoc. Lorsque l'opérateur OR est utilisé avec cette valeur et une des valeurs indicatrices de création, si l'adresse URL de la source pointe vers un noeud ou un enregistrement existant, alors l'enregistrement existant est recopié et un nouveau est créé à sa place. Cette valeur ne peut être utilisé avec adOpenIfExists.
adCreateStructDoc 0x80000000 crée un nouvel enregistrement de type adStructDoc, à la place de l'ouverture d'un enregistrement exustant.
adFailIfNotExists -1 par défaut, résulte une erreur de type run-time si la Source pointe vers un noeud inexistant.
adOpenIfExists 0x2000000 modifie les indicateurs de création adCreateCollection, adCreateNonCollection, et adCreateStructDoc. Lorsque OR est utilisé avec cette valeur et une des valeurs indicatrices de création, si l'adresse URL de la source pointe vers un noeud ou un enregistrement existant, alors le fournisseur peut ouvrir l'enregistrement existant plutôt que d'en créer un nouveau. Cette valeur ne peut être utilisé avec adCreateOverwrite.

5.29 / Les constantes RecordOpenOptionsEnum

Les constantes RecordOpenOptionsEnum spécifient les options pour l'ouverture d'un objet Record. Ces valeurs peuvent être combinées en utilisant l'opérateur OR.

Objet_Record.Open Source, ActiveConnection, 
                 RecordCreateOptionsEnum, RecordOpenOptionsEnum,
                 Nom_Utilisateur, Mot_Passe
Constante Valeur Description
adDelayFetchFields 0x8000 indique au fournisseur que les champs associés à l'enregistrement n'a pas besoin d'être retrouvé initialement, mais peut l'être à la première tentative d'accéder à l'enregistrement. Le comportement par défaut indiqué par l'absence de cet indicateur, est de retrouver tous les champs de l'enregistrement.
adDelayFetchStream 0x4000 indique au fournisseur que l'objet Stream par défaut associé à l'enregistrement n'a pas besoin d'être récupérer initiallement. Le comportement par défaut, indiqué par l'absece de cet indicateur, est de retrouver l'objet Stream par défaut associé à l'enregistrement..
adOpenAsync 0x1000 indique que l'enregistrement est ouvert dans le mode asynchrone.
adOpenExecuteCommand 0x10000 indique que la Source contient une commande textuelle qui doit être exécutée. Cette valeur est équivalente à l'option adCmdText de la méthode Open de l'objet Recordset.
adOpenRecordUnspecified -1 par défaut, indique qu'aucune option n'est spécifiée.
adOpenOutput 0x800000 indique que la source pointe vers un noeud contenant un script exécutable, alors l'enregistrement ouvert contiendra le résultat de l'exécution du script. Cette valeur est seulement valide avec des enregistrements ne faisant pas parti de collection.

5.30 / Les constantes RecordStatusEnum

Les constantes RecordStatusEnum indique le statut d'un enregistrement par rapport à des mises à jour par lot et d'autres opérations par groupe.

Objet_Recordset.Status = RecordStatusEnum
Constante Valeur Description
adRecCanceled 0x100 indique que l'enregistrement n'a pas été sauvegardé car l'opération a été annulée.
adRecCantRelease 0x400 indique que le nouvel enregistrement n'a pas été sauvegardé car l'enregistrement existant a été verrouillé.
adRecConcurrencyViolation 0x800 indique que l'enregistrement n'a pas été sauvegardé car le consentement optimiste était en utilisation.
adRecDBDeleted 0x40000 indique que l'enregistrement a déjà été supprimé de la source de données.
adRecDeleted 0x4 indique que l'enregistrement a été supprimé.
adRecIntegrityViolation 0x1000 indique que l'enregistrement n'a pas été sauvegardé car l'utilisateur a violé les contraintes d'intégrité.
adRecInvalid 0x10 indique que l'enregistrement n'a pas été sauvegardé car son signet n'est pas valide.
adRecMaxChangesExceeded 0x2000 indique que l'enregistrement n'a pas été sauvegardé car il y en avait trop durant les modifications.
adRecModified 0x2 indique que l'enregistrement a étté modifié.
adRecMultipleChanges 0x40 indique que l'enregistrement n'a pas été sauvegardé car il aurait affecté des enregistrements multiples.
adRecNew 0x1 indique que l'enregistrement est nouveau.
adRecObjectOpen 0x4000 indique que l'enregistrement n'a pas été sauvegardé à cause d'un conflit avec un objet stocké ouvert.
adRecOK 0 Indicates that the record was successfully updated.
adRecOutOfMemory 0x8000 indique que l'enregistrement n'a pas été sauvegardé car l'ordinateur a démarré en dépassement de mémoire.
adRecPendingChanges 0x80 indique que l'enregistrement n'a pas été sauvegardé car il se réfère à une insertion en cours.
adRecPermissionDenied 0x10000 indique que l'enregistrement n'a pas été sauvegardé car l'utilisateur a des permissions insuffisantes.
adRecSchemaViolation 0x20000 indique que l'enregistrement n'a pas été sauvegardé car il violé la structure sous-jacente de la base de données.
adRecUnmodified 0x8 indique que l'enregistrement n'a pas été modifié.

5.31 / Les constantes RecordTypeEnum

Les constantes RecordTypeEnum indiquent le type de l'objet Record.

Objet_Record.RecordType = RecordTypeEnum
Constante Valeur Description
adSimpleRecord 0 indique un enregistrement simple ne contenant pas de noeuds enfants.
adCollectionRecord 1 indique une collection d'enregistrements contenant des noeuds enfants.
adRecordUnknown -1 indique que le type de cet enregistrement est inconnu.
adStructDoc 2 indique un type spécial de collection d'enregistements qui représente des documents structurés COM.

5.32 / Les constantes ResyncEnum

Les constantes ResyncEnum indique si les valeurs sous-jacentes sont recopiées par un appel à la méthode Resync.

Objet_Recordset.Resync AffectEnum, ResyncEnum
Constante Valeur Description
adResyncAllValues 2 par défaut, recopie les données et durant les mises à jour sont annulées.
adResyncUnderlyingValues 1 ne recopie pas les données, et durant les mises à jour ne sont pas annulés.

5.33 / Les constantes SaveOptionsEnum

Les constantes SaveOptionsEnum spécifient si un fichier doit être créé ou recopié lors de la sauvegarde à partir d'un objet Stream. Les valeurs peuvent être combinées avec un opérateur AND.

Objet_Stream.SaveToFile Fichier, SaveOptionsEnum
Constante Valeur Description
adSaveCreateNotExist 1 par défaut, crée un nouveau fichier si le fichier spécifié par le paramètre Fichier n'existe pas déjà.
adSaveCreateOverWrite 2 recopie le fichier avec les données provenant de l'objet Stream courant ouvert, si le fichier spécifié par le paramètre Fichier existe déjà.

5.34 / Les constantes SchemaEnum

Les constantes SchemaEnum indique le type de schéma d'un jeu d'enregistrements Recordset que la méthode OpenSchema récupère.

Set Objet_Recordset = _
                      Objet_Connection.OpenSchema(SchemaEnum, _
                                                   Critères, ID_Schema)
Constante
Valeur Description Contraintes
adSchemaAsserts
0 retourne les assertions définies dans le catalogue qui sont possédées par un utilisateur donné. (ASSERTIONS Rowset)
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
adSchemaCatalogs
1 retourne les attributs physiques associés aux catalogues accessibles du DBMS. (CATALOGS Rowset)
CATALOG_NAME
adSchemaCharacterSets
2 retourne les jeux de caractères définis dans le cataloguequi sont accessible à un utilisateur donné. (CHARACTER_SETS Rowset)
CHARACTER_SET_CATALOG
CHARACTER_SET_SCHEMA
CHARACTER_SET_NAME
adSchemaCheckConstraints
5 retourne les contraintes vérifiées définies dans le catalogue qui sont possédées par un utilisateur donné. (CHECK_CONSTRAINTS Rowset)
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
adSchemaCollations
3 retourne les comparaisons de caractères définies dans le catalogue qui sont accessibles à un utilisateur donné. (COLLATIONS Rowset)
COLLATION_CATALOG
COLLATION_SCHEMA
COLLATION_NAME
adSchemaColumnPrivileges
13 retourne les privilèges sur des colonnes de tables définis dans le catalogue qui sont disponible ou accordés à un utilisateur donné. (COLUMN_PRIVILEGES Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
GRANTOR
GRANTEE
adSchemaColumns
4 retourne les colonnes de tableaux définies dans le catalogue qui sont accessibles à un utilisateur donné. (COLUMNS Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
adSchemaColumnsDomainUsage
11 retourne les colonnes définies dans le catalogue qui sont dépendants d'un domaine défini dans le catalogue et possédé par un utilisateur donné. (COLUMN_DOMAIN_USAGE Rowset)
DOMAIN_CATALOG
DOMAIN_SCHEMA
DOMAIN_NAME
COLUMN_NAME
adSchemaConstraintColumnUsage
6 retourne les colonnes utilisées par des contraintes référentielles, contraintes uniques, contraintes vérifiées, et assertions, définis dans le catalogue et possédés par un utilisateur donné. (CONSTRAINT_COLUMN_USAGE Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
adSchemaConstraintTableUsage
7 retourne les tableaux qui sont utilisés par des contraintes référentielles, contraintes uniques, contraintes vérifiées et assertions définis dans le catalogue et possédés par un utilisateur donné. (CONSTRAINT_TABLE_USAGE Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
adSchemaCubes
32 retourne les informations à propos des cubes disponibles dans un schéma. (CUBES Rowset*)
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
adSchemaDBInfoKeywords
30 retourne une liste de mots-clés d'un fournisseur spécifique. (IDBInfo::GetKeywords *)
adSchemaDBInfoLiterals
31 retourne une liste de littéraux d'un fournisseur spécifique utilisés dans les commandes textuelles. (IDBInfo::GetLiteralInfo *)
adSchemaDimensions
33 retourne les informations à propos des dimensions d'un cube donné. (DIMENSIONS Rowset *)
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_NAME
DIMENSION_UNIQUE_NAME
adSchemaForeignKeys
27 retourne les colonnes clés extérieurs définies dans le catalogue par un utilisateur donné. (FOREIGN_KEYS Rowset)
PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME
FK_TABLE_CATALOG
FK_TABLE_SCHEMA
FK_TABLE_NAME
adSchemaHierarchies
34 retourne les informations à propos des hiérarchies disponibles dans un dimension. (HIERARCHIES Rowset *)
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_NAME
HIERARCHY_UNIQUE_NAME
adSchemaIndexes
12 retourne les index définis dans le catalogue qui sont possédés par un utilisateur donné. (INDEXES Rowset)
TABLE_CATALOG
TABLE_SCHEMA
INDEX_NAME
TYPE
TABLE_NAME
adSchemaKeyColumnUsage
8 retourne les colonnes définies dans le catalogue qui sont contraint comme des clés par un utilisateur donné. (KEY_COLUMN_USAGE Rowset)
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
adSchemaLevels
35 retourne les informations à propos des niveaux disponibles dans un dimension. (LEVELS Rowset*)
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_UNIQUE_NAME
LEVEL_NAME
LEVEL_UNIQUE_NAME
adSchemaMeasures
36 retourne les informations à propos des mesures. (MEASURES Rowset *)
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
MEASURE_NAME
MEASURE_UNIQUE_NAME
adSchemaMembers
38 retourne les informations à propos des membres. (MEMBERS Rowset *)
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_UNIQUE_NAME
LEVEL_UNIQUE_NAME
LEVEL_NUMBER
MEMBER_NAME
MEMBER_UNIQUE_NAME
MEMBER_CAPTION
MEMBER_TYPE
adSchemaPrimaryKeys
28 retourne les colonnes des clés primaires définies dans le catalogue par un utilisateur donné. (PRIMARY_KEYS Rowset)
PK_TABLE_CATALOG
PK_TABLE_SCHEMA
PK_TABLE_NAME
adSchemaProcedureColumns
29 retourne les informations à propos des colonnes et des jeux de lignes retournés par des procédures. (PROCEDURE_COLUMNS Rowset)
PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
COLUMN_NAME
adSchemaProcedureParameters
26 retourne les informations à propos des paramètres et retourne les codes des procédures. (PROCEDURE_PARAMETERS Rowset)
PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PARAMETER_NAME
adSchemaProcedures
16 retourne les rocédures définies dans le catalogue qui sont possédés par un utilisateur donné. (PROCEDURES Rowset)
PROCEDURE_CATALOG
PROCEDURE_SCHEMA
PROCEDURE_NAME
PROCEDURE_TYPE
adSchemaProperties
37 retourne les informations à propos des propriétés disponibles pour chaque niveau des dimensions. (PROPERTIES Rowset *)
CATALOG_NAME
SCHEMA_NAME
CUBE_NAME
DIMENSION_UNIQUE_NAME
HIERARCHY_UNIQUE_NAME
LEVEL_UNIQUE_NAME
MEMBER_UNIQUE_NAME
PROPERTY_TYPE
PROPERTY_NAME
adSchemaProviderSpecific
-1 utilisé si le fournisseur définit ses propres requêtes de schéma non-standards.  
adSchemaProviderTypes
22 retourne les types de données supportés par le fournisseur de données. (PROVIDER_TYPES Rowset)
DATA_TYPE
BEST_MATCH
adSchemaReferentialConstraints
9 retourne les contraintes référentielles définies dans le catalogue qui sont possédées par un utilisateur donné. (REFERENTIAL_CONSTRAINTS Rowset)
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
adSchemaSchemata
17 retourne les schémas qui sont possédés par un utilisateur donné. (SCHEMATA Rowset)
CATALOG_NAME
SCHEMA_NAME
SCHEMA_OWNER
adSchemaSQLLanguages
18 retourne les niveaux de conformité, les options, et les dialectes supportés par le traitement de données SQL défini dans le catalogue. (SQL_LANGUAGES Rowset)
adSchemaStatistics
19 retourne les statistiques définies dans le catalogue qui sont possédées par un utilisateur donné. (STATISTICS Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
adSchemaTableConstraints
10 retourne les tableaux de contraintes définis dans le catalogue qui sont possédés par un utilisateur donné. (TABLE_CONSTRAINTS Rowset)
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
CONSTRAINT_TYPE
adSchemaTablePrivileges
14 retourne les provilèges sur des tableaux définis dans le catalogue qui sont disponibles ou concédés par un utilisateur donné. (TABLE_PRIVILEGES Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
GRANTOR
GRANTEE
adSchemaTables
20 retourne les tableaux définis dans le catalogue qui sont accessibles à un utilisateur donné. (TABLES Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
TABLE_TYPE
adSchemaTranslations
21 retourne les traductions de caractères définis dans le catalogue qui sont accessibles à un utilisateur donné. (TRANSLATIONS Rowset)
TRANSLATION_CATALOG
TRANSLATION_SCHEMA
TRANSLATION_NAME
adSchemaTrustees
39 réservé pour une future utilisation.  
adSchemaUsagePrivileges
15 retourne les privilèges en usage sur des objets définis dans le catalogue qui sont disponibles et concédés par un utilisateur donné. (USAGE_PRIVILEGES Rowset)
OBJECT_CATALOG
OBJECT_SCHEMA
OBJECT_NAME
OBJECT_TYPE
GRANTOR
GRANTEE
adSchemaViewColumnUsage
24 retourne les colonnes sur lesquelles sont vus des tableaux définis dans le catalogue et possédés par un utilisateur donné, sont dépendant. (VIEW_COLUMN_USAGE Rowset)
VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME
adSchemaViews
23 retourne les vues définies dans le catalogue qui sont accessibles à un utilisateur donné. (VIEWS Rowset)
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
adSchemaViewTableUsage
25 retourne les tableaux sur lesquels des tableaux sont vus, définis dans le catalogue et possédés par un utilisateur donné, sont dépendants. (VIEW_TABLE_USAGE Rowset)
VIEW_CATALOG
VIEW_SCHEMA
VIEW_NAME

5.35 / Les constantes SearchDirectionEnum

Les constantes SearchDirectionEnum indiquent la direction d'une recherche d'enregistrement à l'intérieur d'un objet recordset

Objet_Recordset.Find(Critère, Saut_ligne, _
                        SearchDirectionEnum, Démarrage)
Constante Valeur Description
adSearchBackward -1 recherche en arrière, stoppant au début de l'objet Recordset. Si une correspondance n'est pas trouvée, le pointeur d'enregistrement est positionné à BOF (Before Of File).
adSearchForward 1 recherche en avant, stoppant à la fin de l'objet Recordset. Si une correspondance n'est pas trouvée, le pointeur d'enregistrement est positionné à EOF (End Of File).

5.36 / Les constantes SeekEnum

Les constantes SeekEnum indique le type de recherche à exécuter.

Objet_Recordset.Seek Tableau_Valeurs, SeekEnum
Constante Valeur Description
adSeekFirstEQ 1 recherche le premier index égal au tableau de valeurs spécifié.
adSeekLastEQ 2 recherche le dernier index au tableau de valeurs spécifié.
adSeekAfterEQ 4 recherche soit un index égal au tableau de valeurs spécifié, soit juste après où cette correspondance se serait présentée.
adSeekAfter 8 recherche un index juste après où une correspondance avec un tableau de valeurs se serait présentée.
adSeekBeforeEQ 16 recherche soit un index égal au tableau de valeurs, soit juste avant où cette correspondance se serait présentée.
adSeekBefore 32 recherche une clé juste avant où une correspondance avec le tableau de valeurs se serait présentée.

5.37 / Les constantes de Stat

Les constantes de la méthode Stat, c'est-à-dire StatStg et StatFlag permettent de récupérer une information à propos de l'objet Stream.

Objet_Stream.Stat(StatStgEnum, StatFlag)

Le paramètre StatStg indique une structure STATSTG qui sera remplie avec l'information à proposde l'objet Stream. La mise en oeuvre de la méthode Stat utilisée par l'objet Stream d'ADO ne se remplit pas dans tous les champs de la structure.

Le paramètre StatFlag indique que cette méthode ne retourne aucuns des membres dans la structure de STATSTG, sauvegardant ainsi une opération d'allocation de mémoire. Les valeurs sont fixées selon les valeurs possibles de STATFLAG.

Constante Valeur
STATFLAG_DEFAULT 0
STATFLAG_NONAME 1

5.38 / Les constantes StreamOpenOptionsEnum

Les constantes StreamOpenOptionsEnum indiquent les options pour l'ouverture d'un objet Stream. Les valeurs peuvent être combinées par un opérateur OR.

Objet_Stream.Open Source, ConnectModeEnum, _
               StreamOpenOptionsEnum, Nom_Utilisateur, Mot_Passe
Constante Valeur Description
adOpenStreamAsync 1 ouvre l'objet Stream dans un mode asynchrone.
adOpenStreamFromRecord 4 identifie le contenu du paramètre Source pour être un objet Record déjà ouvert. Le comportement par défaut est de traiter la Source comme une URL qui pointe directement vers un noeud dans une arborescence. Le flux par défaut associé avec ce noeud est ouvert.
adOpenStreamUnspecified -1 par défaut, indique l'ouverture de l'objet Stream avec les options par défaut.

5.39 / Les constantes StreamTypeEnum

Les constantes StreamTypeEnum indiquent le type de données stockées dans un objet Stream.

Objet_Stream.Type = StreamTypeEnum
Constante Valeur Description
adTypeBinary 1 indique des données binaires.
adTypeText 2 par défaut, indique des données textuelles converties dans le jeu de caractères spécifié.

5.40 / Les constantes StreamWriteEnum

Les constantes StreamWriteEnum indiquent si un séparateur de ligne est ajouté à une chaîne de caractères écrite dans un objet Stream.

Objet_Stream.WriteText Donnée, StreamWriteEnum
Constante Valeur Description
adWriteChar 0 par défaut, écrit le texte spécifié par le paramètre Donnée vers l'objet Stream.
adWriteLine 1 écrit un texte et un séparateur de lignes dans un objet Stream. Si la propriété LineSeparator n'est pas définie, alors elle retourne un erreur de traitement.

5.41 / La constante StringFormatEnum

La constante StringFormatEnum indique le format à utiliser pour construire la chaîne de caractères retournée suite à la récupération des enregistrements.

Objet_Recordset.GetString(StringFormatEnum)
Constante Valeur Description
adClipString 2 délimite les lignes par un retour charriot (CARRIAGE RETURN), les colonnes par une tabulation (TAB) et la valeur Null par une chaîne vide (EMPTY-string).

6 / Les commanes SQL

Les commandes select et FROM sont utilsées pour sélectionner des tables dans une base de données.

Il est également possible de sélectionner de un à plusieurs champs en séparant les noms de champs ou de colonnes par une virgule. Pour sélectionner tous les champs, il suffit d'utiliser une étoile à la place des nomds de champs.

select nom_champ,..., nom_champN FROM nom_table
Librairie
ISBN Livre Editeur Prix
1565926978 ORACLE SQL : THE ESSENTIAL REFERENCE (EN ANGLAIS) O'REILLY 330.00
1565929489 ORACLE SQL* LOADER : THE DEFINITIVE GUIDE (EN ANGLAIS) O'REILLY 286.00
2212092857 INITIATION A SQL - COURS ET EXERCICES CORRIGES EYROLLES 183.00
2744009296 SQL CAMPUSPRESS FRANCE 62.00
2744090034 MAITRISEZ SQL WROX PRESS 286.00
2840725029 SQL ENI 140.00
2840828987 KIT DE FORMATION MICROSOFT SQL SERVER 2000 ADMINISTRATION SYSTEME MICROSOFT PRESS 284.00
select Livre FROM Librairie
' retourne
ORACLE SQL : THE ESSENTIAL REFERENCE (EN ANGLAIS)
ORACLE SQL* LOADER : THE DEFINITIVE GUIDE (EN ANGLAIS)
INITIATION A SQL - COURS ET EXERCICES CORRIGES
SQL
MAITRISEZ SQL
SQL
KIT DE FORMATION MICROSOFT SQL 
        SERVER 2000 ADMINISTRATION SYSTEME

La commande DISTINCT sélectionne chaque élément distinct d'une colonne de données.

La commande ALL indique que les doublons peuvent apparaître dans le résultat d'une requête, elle constitue la commande par défaut de select.

select DISTINCT nom_champ FROM nom_table
select DISTINCT Livre FROM Librairie

' retourne
ORACLE SQL : THE ESSENTIAL REFERENCE (EN ANGLAIS)
ORACLE SQL* LOADER : THE DEFINITIVE GUIDE (EN ANGLAIS)
INITIATION A SQL - COURS ET EXERCICES CORRIGES
SQL
MAITRISEZ SQL
KIT DE FORMATION MICROSOFT SQL 
        SERVER 2000 ADMINISTRATION SYSTEME

La commande WHERE pose une condition dans la requête de sélection. L'expression conditionnelle peut être construite à l'aide de plusieurs prédicats constitués d'opérateurs de comparaisons (= | <> | != | > | > = | !> | < | <= | !<)et séparés par des opérateurs booléens AND, OR ou NOT.

select "nom_champ"
FROM "nom_table"
WHERE "condition"
select Livre FROM Librairie WHERE Prix < 200

' retourne
INITIATION A SQL - COURS ET EXERCICES CORRIGES
SQL
SQL

La commande GROUP BY spécifie des groupes dans lesquels les lignes de sortie doivent être placées et calcule une valeur de résumé pour chacun des groupes si des fonctions d'agrégation sont employées avec la commande select.

select nom_champ,
Fonction_Agregation
FROM nom_table
GROUP BY nom_champ2
select Editeur,
SUM(Prix)
FROM Librairie
GROUP BY Editeur

' retourne
O'REILLY 616.00
EYROLLES 183.00
CAMPUSPRESS FRANCE 62.00
WROX PRESS 286.00
ENI 140.00
MICROSOFT PRESS 284.00

La commande HAVING spécifie un critère de recherche pour un groupe ou une fonction d'agrégation. HAVING est génralement utilisé avec GROUP BY, sinon HAVING se comporte à l'instar de WHERE.

select nom_champ,
Fonction_Agregation
FROM nom_table
GROUP BY nom_champ2
HAVING "Condition"
select Editeur,
SUM(Prix)
FROM Librairie
GROUP BY Editeur
HAVING SUM(Prix) > 200

' retourne
O'REILLY 616.00
WROX PRESS 286.00
MICROSOFT PRESS 284.00

Les alias concourrent à améliorer la lisibilité d'une requête. Il existe deux types d'alias : les alias de tables et les alias de champs. Les alias peuvent également s'appliquer à une fonction d'agrégation retournant des données sous forme de colonnes.

select Alias_table.nom_champ Alias_champ
FROM nom_table AS Alias_table
select L.Editeur Edi,
SUM(L.Prix) F
FROM Librairie As L
GROUP BY Edi
HAVING F > 200

' retourne
O'REILLY 616.00
WROX PRESS 286.00
MICROSOFT PRESS 284.00

Les commandes de jointures de tables donnent la possibilité d'appliquer des requêtes sur plusieurs tables d'une base de données.

select tab.nom_champ
FROM nom_table As tab
[INNER | {{LEFT | RIGHT | FULL } [ OUTER]}]
         JOIN  nom_table2 As tab2
ON Condition

La condition de la commande ON permet de comparer les tables jointes par l'intermédiaire de champs dont les valeurs sont identiques et comparables.

INNER JOIN (option par défaut) indique toutes les paires correspondantes des lignes renvoyées et supprime les lignes n'ayant pas de correspondance entre les deux tables.

FULL OUTER JOIN indique qu'une ligne de la table de gauche ou de droite, ne respectant pas la condition de jointure, est comprise dans le jeu de résultats et que les colonnes de sortie correspondant à l'autre table comportent des valeurs NULL.

LEFT OUTER JOIN indique que toutes les lignes de la table de gauche ne respectant pas la condition de jointure sont incluses dans le jeu de résultats, et que les colonnes de sortie de l'autre table ont des valeurs NULL en plus de toutes les lignes renvoyées par la jointure interne.

RIGHT OUTER JOIN indique que toutes les lignes de la table de droite ne respectant pas la condition de jointure sont comprises dans le jeu de résultats, et que les colonnes de sortie correspondant à l'autre table ont des valeurs NULL en plus de toutes les lignes renvoyées par la jointure interne.

Edition
Editeur Adresse URL
O'REILLY http://www.oreilly.com/
CAMPUSPRESS FRANCE http://www.campuspress.fr/
WROX PRESS http://www.wrox.com/
MICROSOFT PRESS http://www.microsoft.com/mspress/
select  L.ISBN, L.Editeur, E.Adresse
FROM Librairie As L
INNER JOIN Edition As E
ON L.Editeur = E.Editeur
' retourne
ISBN Editeur Adresse
1565926978 O'REILLY http://www.oreilly.com/
1565929489 O'REILLY http://www.oreilly.com/
2744009296 CAMPUSPRESS
FRANCE
http://www.campuspress.fr/
2744090034 WROX PRESS http://www.wrox.com/
2840828987 MICROSOFT
PRESS
http://www.microsoft.com/mspress/
select  L.ISBN, L.Editeur, E.Adresse
FROM Librairie As L
LEFT OUTER JOIN Edition As E
ON L.Editeur = E.Editeur
' retourne
ISBN Editeur Adresse
1565926978 O'REILLY http://www.oreilly.com/
1565929489 O'REILLY http://www.oreilly.com/
2212092857 EYROLLES NULL
2744009296 CAMPUSPRESS
FRANCE
http://www.campuspress.fr/
2744090034 WROX PRESS http://www.wrox.com/
2840725029 ENI NULL
2840828987 MICROSOFT
PRESS
http://www.microsoft.com/mspress/

Les fonctions d'agrégation accomplissent un calcul sur plusieurs valeurs et retournent un résultat et sont souvent utilisées avec les commandes GROUP BY et select.

Hormis la fonction COUNT, les fonctions d'agrégation ne tiennent pas compte des valeurs NULL.

Fonction Description
AVG retourne la moyenne des valeurs d'un groupe.
BINARY_CHECKSUM retourne la valeur totale de contrôle binaire calculée à partir d'une ligne d'une table ou d'une liste d'expressions.
CHECKSUM retourne la valeur de checksum calculée dans une ligne d'une table ou dans une liste d'expressions.
CHECKSUM_AGG retourne le checksum des valeurs d'un groupe.
COUNT retourne le nombre d'éléments figurant dans un groupe.
COUNT_BIG retourne le nombre d'éléments figurant dans un groupe.
MAX retourne la valeur maximale de l'expression.
MIN retourne la valeur minimale de l'expression.
SUM retourne la somme de toutes les valeurs
STDEV retourne l'écart type de toutes les valeurs de l'expression spécifiée.
STDEVP retourne l'écart type de remplissage pour toutes les valeurs de l'expression spécifiée.
var retourne la variance de toutes les valeurs de l'expression spécifiée.
VARP retourne la variance de remplissage pour toutes les valeurs de l'expression spécifiée.
select COUNT(Livre)
FROM Librairie

' retourne
7

SELECT SUM(Prix)
FROM Librairie

' retourne
1 571