Partager via


Détails concernant HelloData

S’applique à : Access 2013, Office 2013

L'application HelloData effectue les opérations de base d'une application ADO standard : extraction, vérification, modification et mise à jour des données. Lorsque vous démarrez l'application, cliquez sur le premier bouton, Get Data. Cette action déclenche l'exécution de la sous-routine GetData().

GetData

GetData place une chaîne de connexion valide dans une variable de module m_sConnStr.. Pour plus d’informations sur les chaînes de connexion, consultez la rubrique 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 Chapitre 6 : 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 Recordset déconnecté. Cela signifie qu’une fois que les données ont été extraites de la source de données, la connexion physique avec la source de données est rompue, mais vous pouvez toujours travailler avec les données mises en cache localement dans votre objet Recordset .

Après ouverture de la connexion, affectez une chaîne SQL à une variable (sSQL). Ensuite, instanciez un nouvel objet Recordset , m_oRecordset1 . Dans la ligne de code suivante, ouvrez l’objet Recordset sur la connexion existante, en passant . Dans la ligne de code suivante, ouvrez l’objet Recordset sur la connexion existante, en passant sSQL comme source de l’objet Recordset. Vous aidez ADO à déterminer que la chaîne SQL que vous avez passée comme source pour l’objet Recordset est une définition textuelle d’une commande en passant adCmdText dans l’argument final à la méthode RecordsetOpen . Cette ligne définit aussi les propriétés LockType et CursorType associées au Recordset.

La ligne de code suivante précise que la propriété MarshalOptions est égale à adMarshalModifiedOnly. MarshalOptions indique quels enregistrements doivent être marshalés vers le niveau intermédiaire (ou le serveur web). Pour plus d’informations sur le marshaling, voir 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. Le fait de définir la propriété MarshalOptions sur adMarshalModifiedOnly peut améliorer les performances car les lignes à marshaler sont moins nombreuses.

Ensuite, déconnectez le Recordset en indiquant que sa propriété ActiveConnection est égale à Nothing. Pour plus d’informations, consultez la rubrique Déconnexion et reconnexion de l’objet Recordset dans le Chapitre  5 : Mise à jour et persistance des données.

Fermez la connexion à la source de données et détruisez l'objet Connection existant de façon à libérer les ressources qu'il utilise.

La dernière étape consiste à définir le Recordset comme DataSource de la grille Microsoft liée aux données sur le formulaire de façon à pouvoir afficher facilement les données du Recordset sur ce formulaire.

Cliquez sur le deuxième bouton, Examine Data. Cette action déclenche l'exécution de la sous-routine ExamineData.

ExamineData

ExamineData uses various methods and properties of the Recordset object to display information about the data in the Recordset. It reports the number of records by using the RecordCount property. It loops through the Recordset and prints the value of the AbsolutePosition property in the display text box on the form. En outre, dans la boucle, la valeur de la propriété Bookmark du troisième enregistrement est placée dans une variable de variante, vBookmark, pour une utilisation ultérieure.

La routine revient directement au troisième enregistrement grâce à la variable bookmark enregistrée précédemment. Elle appelle la sous-routine WalkFields qui exécute une boucle dans la collection Fields du Recordset et affiche les détails relatifs à chaque objet Field de la collection.

Enfin, ExamineData utilise la propriété Filter du Recordset pour filtrer les enregistrements selon le critère « CategoryId égale 2 ». L'application de ce filtre a un résultat immédiatement visible dans la grille d'affichage du formulaire.

Pour plus d'informations sur la fonctionnalité de la sous-routine ExamineData, consultez le chapitre 3 : Examen des données.

Cliquez ensuite sur le troisième bouton, Edit Data. Cette action déclenche l'exécution de la sous-routine EditData.

EditData

When the code enters the EditData subroutine, the Recordset is still filtered on CategoryId equal to 2, so only those items that meet the filter criteria are visible. It first loops through the Recordset and increases the price of each visible item in the Recordset by 10 percent. The value of the Price field is changed by setting the Value property for that field equal to a new, valid amount.

N'oubliez pas que le Recordset est déconnecté de la source de données. Les modifications apportées à EditData ne sont effectuées que sur la copie des données dans le cache local. Pour plus d'informations, consultez le Chapitre 4 : Modification des données.

Aucune modification ne sera apportée à la source de données tant que vous n'aurez pas cliqué sur le quatrième bouton, Update Data. Cette action déclenche l'exécution de la sous-routine UpdateData.

UpdateData

La sous-routine UpdateData élimine d’abord le filtre appliqué au Recordset. Le code supprime et réinitialise en tant que Source de données pour microsoft Bound DataGrid sur le formulaire afin que l’objet Recordset non filtré apparaisse dans la grille.

Le code vérifie alors si vous pouvez revenir en arrière dans le Recordset en utilisant la méthode Supports avec l'argument adMovePrevious.

La routine passe au premier enregistrement grâce à la méthode MoveFirst et affiche les valeurs d'origine et actuelles du champ par le biais 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 présentées au Chapitre 5 : Mise à jour et persistance des données.

Un nouvel objet Connection est ensuite créé et est utilisé pour rétablir la connexion à la source de données. Vous reconnectez le Recordset à la source de données en définissant le nouvel objet Connexion comme ActiveConnection du Recordset. Pour envoyer les mises à jour au serveur, le code appelle UpdateBatch sur le Recordset.

Si la mise à jour par lot réussit, une variable d’indicateur au niveau du module, , est définie sur True. Cet indicateur vous rappellera ultérieurement de nettoyer toutes les modifications apportées à la base de données.

Enfin, le code revient au premier enregistrement du Recordset et affiche les valeurs d'origine et actuelles. Les valeurs sont identiques après l'appel de la méthode UpdateBatch.

Pour obtenir des informations plus détaillées sur la mise à jour des données, notamment ce qu’il faut faire lorsque les données du serveur sont modifiées alors que votre Recordset est déconnecté, consultez le Chapitre  5 : Mise à jour et persistance des données.

Form_Unload

La sous-routine Form_Unload est importante pour plusieurs raisons. Tout d'abord, comme il s'agit d'un exemple d'application, Form_Unload nettoie les modifications apportées à la base de données avant la fermeture de l'application. Ensuite, le code montre comment une commande peut être exécutée directement à partir d'un objet Connection ouvert grâce à la méthode Execute . Enfin, il montre un exemple d'exécution d'une requête sans renvoi de ligne (requête UPDATE) sur la source de données.