Partager via


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 .

ObtenirDonnées

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éation de la chaîne de connexion.

Affectez un gestionnaire d’erreurs à l’aide d’une instruction Visual Basic OnError. Pour plus d’informations sur la gestion des erreurs dans ADO, consultez gestion des erreurs. Un nouvel objet Connection est créé et la propriété CursorLocation est définie sur adUseClient, car l’exemple HelloData crée un jeu d’enregistrements 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 jeu d’enregistrements objet.

Une fois la connexion ouverte, affectez une chaîne SQL à une variable (sSQL). Créez ensuite une instance d’un objet Recordset, m_oRecordset1. Dans la ligne de code suivante, ouvrez le jeu d’enregistrements sur la connexion existante, en passant sSQL comme source du jeu d’enregistrements . Vous aidez ADO à déterminer que la chaîne SQL que vous avez passée en tant que source pour le jeu d’enregistrements 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 le CursorType associés au jeu d’enregistrements .

La ligne de code suivante définit la propriété MarshalOptions égale à adMarshalModifiedOnly. MarshalOptions indique quels enregistrements doivent être marshalés vers le 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. Définir MarshalOptions à adMarshalModifiedOnly peut améliorer les performances, car cela réduit le nombre de lignes à transférer.

Ensuite, déconnectez le jeu d’enregistrements en définissant sa propriété ActiveConnection égale à Nothing. Pour plus d’informations, consultez la section « Déconnexion et reconnexion du jeu d’enregistrements » dans Mise à jour et persistance 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 le jeu d’enregistrements comme de source de données pour le contrôle Microsoft DataGrid sur le formulaire afin que vous puissiez facilement afficher les données du jeu d’enregistrements sur le formulaire.

Cliquez sur le bouton numéro deux, Examiner les données. Cette opération exécute la sous-routine ExamineData.

ExaminerDonnées

ExamineData utilise différentes méthodes et propriétés de l’objet Recordset pour afficher des informations sur les données du jeu d’enregistrements . Il signale le nombre d’enregistrements à l’aide de la propriété RecordCount. Il effectue une boucle dans le jeu d’enregistrements et affiche la valeur de la propriété AbsolutePosition dans la boîte 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 revient 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 du jeu d’enregistrements et affiche des détails sur chaque Field dans 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.

ModifierDonnées

Lorsque le code entre dans la sous-routine EditData, le jeu d'enregistrements est toujours filtré par CategoryId égal à 2, pour que seuls les éléments correspondant aux critères de filtrage soient visibles. Il parcourt d'abord le jeu d'enregistrements et augmente le prix de chaque article visible dans le jeu d'enregistrements de 10 %. La valeur du champ Price est modifiée en définissant la propriété Valeur pour ce champ égal à un nouveau montant valide.

N’oubliez pas que le jeu d’enregistrements est déconnecté de la source de données. Les modifications 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 à la source de données tant que vous n’avez pas cliqué sur le quatrième bouton, Mettre à jour les données. Cette opération exécute la sous-routine UpdateData.

MettreÀJourLesDonnées

UpdateData supprime d’abord le filtre appliqué au jeu d’enregistrements . Le code supprime et réinitialise m_oRecordset1 en tant que DataSource pour Microsoft Bound DataGrid sur le formulaire afin que le jeu d’enregistrements non filtré s’affiche dans la grille.

Le code vérifie ensuite si vous pouvez revenir en arrière dans le jeu d’enregistrements à l’aide de la méthode Supports avec l’argument adMovePrevious.

La routine passe au 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é UnderlyingValue (non utilisée ici), sont décrites dans Mise à jour et persistance des données.

Ensuite, un nouvel objet Connection est créé et utilisé pour rétablir une connexion à la source de données. Vous reconnectez le jeu d’enregistrements à la source de données en définissant la nouvelle connexion comme connexion active pour le jeu d’enregistrements . Pour envoyer les mises à jour au serveur, le code appelle UpdateBatch sur le Recordset.

Si la mise à jour par lots réussit, une variable d’indicateur au niveau du module, m_flgPriceUpdated, a la valeur 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 du jeu d’enregistrements et affiche les valeurs d’origine et actuelles. Les valeurs sont identiques après l’appel à UpdateBatch.

Pour plus d’informations sur la façon de mettre à jour les données, notamment ce qu’il faut faire lorsque les données sur le serveur changent pendant que votre jeu d’enregistrements est déconnecté, consultez Mise à jour et persistance 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 de connexion 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.