Commentaires sur HelloData
L’application HelloData effectue les étapes de base d’une application ADO classique : obtention, examen, modification et mise à jour des données. Lorsque vous démarrez l’application, cliquez sur le premier bouton, Obtenir des données. Cette opération exécute la sous-routine GetData .
GetData
GetData place une chaîne de connexion valide dans une variable au niveau du module, m_sConnStr. Pour plus d’informations sur les chaînes de connexion, consultez Créer des chaînes de connexions.
Attribuez un gestionnaire d’erreurs à l’aide d’une instruction Visual Basic OnError . Pour plus d’informations sur les erreurs dans ADO, consultez Gestion des erreurs dans les données. Un objet Connection est créé et la propriété CursorLocation est définie sur adUseClient , car l’exemple HelloData crée un recordset déconnecté. Cela signifie que dès que les données ont été extraites de la source de données, la connexion physique avec la source de données est interrompue, mais vous pouvez toujours utiliser les données mises en cache localement dans votre objet Recordset .
Une fois la connexion ouverte, affectez une chaîne SQL à une variable (sSQL). Créez ensuite une instance d’un nouvel objet Recordset, m_oRecordset1
Dans la ligne de code suivante, ouvrez Recordset sur la connexion existante, en passant sSQL
comme source de Recordset. Vous aidez ADO à déterminer que la chaîne SQL que vous avez transmise comme source pour Recordset est une définition textuelle d’une commande en passant adCmdText dans l’argument final à la méthode Recordset Open . Cette ligne définit également le LockType et CursorType associé à Recordset.
La ligne de code suivante définit la propriété MarshalOptions égale à adMarshalModifiedOnly. MarshalOptions indique quels enregistrements doivent être marshalés au niveau intermédiaire (ou serveur Web). Pour plus d’informations sur le marshaling, consultez la documentation COM. Lorsque vous utilisez adMarshalModifiedOnly avec un curseur côté client (CursorLocation = adUseClient), seuls les enregistrements qui ont été modifiés sur le client sont réécrits dans le niveau intermédiaire. La définition de MarshalOptions sur adMarshalModifiedOnly peut améliorer les performances, car moins de lignes sont marshalées.
Ensuite, déconnectez l’objet Recordset en définissant sa propriété ActiveConnection égale à Nothing. Pour plus d’informations, consultez la section « Déconnexion et reconnectation du Recordset » dans Mise à jour et Conservation des données.
Fermez la connexion à la source de données et détruisez l’objet Connection existant. Cela libère les ressources qu’il a consommées.
La dernière étape consiste à définir Recordset en tant que DataSource pour le contrôle Microsoft DataGrid sur le formulaire afin que vous puissiez facilement afficher les données de l’objet Recordset sur le formulaire.
Cliquez sur le deuxième bouton, Examiner les données. Cette opération exécute la sous-routine ExamineData .
ExamineData
ExamineData utilise différentes méthodes et propriétés de l’objet Recordset pour afficher des informations sur les données de Recordset. Il signale le nombre d’enregistrements à l’aide de la propriété RecordCount . Il effectue une boucle dans Recordset et imprime la valeur de la propriété AbsolutePosition dans la zone de texte d’affichage du formulaire. En outre, dans la boucle, la valeur de la propriété Bookmark pour le troisième enregistrement est placée dans une variable variant, vBookmark, pour une utilisation ultérieure.
La routine retourne directement au troisième enregistrement à l’aide de la variable de signet qu’elle a stockée précédemment. La routine appelle la sous-routine WalkFields , qui effectue une boucle dans la collection Fields de l’objet Recordset et affiche des détails sur chaque champ de la collection.
Enfin, ExamineData utilise la propriété Filter du jeu d’enregistrements pour afficher uniquement ces enregistrements avec un CategoryId égal à 2. Le résultat de l’application de ce filtre est immédiatement visible dans la grille d’affichage du formulaire.
Pour plus d’informations sur les fonctionnalités affichées dans la sous-routine ExamineData , consultez Examen des données.
Cliquez ensuite sur le troisième bouton, Modifier les données. Cette opération exécute la sous-routine EditData .
EditData
Lorsque le code entre dans la sous-routine EditData, l’objet Recordset est toujours filtré sur CategoryId égal à 2, de sorte que seuls les éléments qui répondent aux critères de filtre soient visibles. Il effectue d’abord une boucle dans le jeu d’enregistrements et augmente le prix de chaque élément visible dans le jeu d’enregistrements de 10 pour cent. La valeur du champ Prix est modifiée en définissant la propriété Valeur pour ce champ égal à un nouveau montant valide.
N’oubliez pas que Recordset est déconnecté de la source de données. Les modifications qui ont été apportées dans EditData sont apportées uniquement à la copie mise en cache locale des données. Pour plus d'informations, consultez Modification des données.
Les modifications ne seront pas apportées sur la source de données tant que vous n’avez pas cliqué sur le quatrième bouton, Mettre à jour les données. Cela exécute la sous-routine UpdateData .
UpdateData
UpdateData supprime d’abord le filtre qui a été appliqué au Recordset. Le code supprime et réinitialise m_oRecordset1
en tant que DataSource pour Microsoft Bound DataGrid sur le formulaire afin que Recordset non filtré s’affiche dans la grille.
Le code vérifie ensuite si vous pouvez descendre vers l’arrière dans l’objet Recordset à l’aide de la méthode Supports avec l’argument adMovePrevious .
La routine se déplace vers le premier enregistrement à l’aide de la méthode MoveFirst et affiche les valeurs d’origine et actuelles du champ, à l’aide des propriétés OriginalValue et Value de l’objet Field . Ces propriétés, ainsi que la propriété Sous-jacent (non utilisée ici), sont décrites dans Mise à jour et Conservation des données.
Ensuite, un nouvel objet Connection est créé et utilisé pour rétablir une connexion à la source de données. Vous reconnectez Recordset à la source de données en définissant la nouvelle Connexion comme ActiveConnection pour l’objet Recordset. Pour envoyer les mises à jour au serveur, le code appelle UpdateBatch sur l’objet Recordset.
Si la mise à jour par lot réussit, une variable d’indicateur au niveau du module, m_flgPriceUpdated
, est définie sur True. Cela vous rappellera plus tard de nettoyer toutes les modifications apportées à la base de données.
Enfin, le code revient au premier enregistrement dans l’objet Recordset et affiche les valeurs d’origine et actuelles. Les valeurs sont identiques après l’appel à UpdateBatch.
Pour plus d’informations sur la mise à jour des données, notamment sur ce qu’il faut faire lorsque les données sur le serveur changent pendant que votre Recordset est déconnecté, consultez Mise à jour et conservation des données.
Form_Unload
La sous-routine Form_Unload est importante pour plusieurs raisons. Tout d’abord, étant donné qu’il s’agit d’un exemple d’application, Form_Unload nettoie les modifications apportées à la base de données avant la sortie de l’application. Deuxièmement, le code montre comment une commande peut être exécutée directement à partir d’un objet Connection ouvert à l’aide de la méthode Execute . Enfin, il montre un exemple d’exécution d’une requête sans retour de ligne (requête UPDATE) sur la source de données.