- Ouverture d'un jeu d'enregistrements
- Compter le nombre d'enregistrements en utilisant VBA
- Parcourir un RecordSet à l'aide de VBA
- Ajouter un enregistrement à un RecordSet
- Mise à jour d'un jeu d'enregistrements
- Lecture de valeurs à partir d'un enregistrement
- Suppression d'un enregistrement d'un jeu d'enregistrements
Dans ce didacticiel, nous allons apprendre à ouvrir un Recordset, compter le nombre d'enregistrements dans le Recordset, parcourir le Recordset, ajouter un enregistrement, mettre à jour un enregistrement, lire une valeur à partir d'un enregistrement et supprimer un enregistrement.
Nous avons une table d'accès, appelée ProductsT, illustrée ci-dessous :
Ouverture d'un jeu d'enregistrements
Nous devons d'abord établir la base de données que nous avons l'intention d'utiliser, dans ce cas il s'agit de la base de données actuellement ouverte. Nous pouvons ensuite utiliser la méthode CurrentDB.OpenRecordSet pour ouvrir/créer notre Recordset.
Afin de créer un Recordset qui nous permettra de manipuler les données de la table appelée ProductsT, nous utiliserons le code suivant :
1 | CurrentDb.OpenRecordset ("ProduitsT") |
Compter le nombre d'enregistrements en utilisant VBA
Une fois que vous avez créé un jeu d'enregistrements, vous souhaiterez plus que probablement en faire quelque chose d'utile ou manipuler les données qu'il contient d'une manière ou d'une autre. Vous pouvez compter le nombre d'enregistrements dans votre ensemble de données (dans ce cas la table appelée ProductsT) à l'aide du code suivant :
1 | MsgBox CurrentDb.OpenRecordset("ProduitsT").RecordCount |
Parcourir un RecordSet à l'aide de VBA
Le code suivant parcourt notre RecordSet :
1234567891011121314 | Sous RecordSet_Loop ()Dim ourDatabase As DatabaseDim ourRecordset As RecordsetDéfinir ourDatabase = CurrentDbDéfinir ourRecordset = ourDatabase.OpenRecordset("ProduitsT")Faire jusqu'à ourRecordset.EOFMsgBox ourRecordset!ProductIDourRecordset.MoveNextBoucleFin du sous-marin |
Programmation VBA | Le générateur de code fonctionne pour vous !
Ajouter un enregistrement à un RecordSet
Utilisez la méthode Recordset.AddNew pour ajouter un nouvel enregistrement au RecordSet :
1234567891011121314 | Sous-ensemble d'enregistrements_Ajouter()Avec CurrentDb.OpenRecordset("ProduitsT").AjouterNouveau![ProductID] = 8![ProductName] = "Produit HHH"![ProduitPrixParUnité] = 10![ProductCategory] = "Jouets"![UnitésEnStock] = 15.Mettre à jourTerminer parFin du sous-marin |
Le résultat est:
Mise à jour d'un jeu d'enregistrements
Vous devez utiliser la méthode Recordset.AddNew ou Recordset.Edit. Après cette instruction, vous devez utiliser la méthode Recordset.Update afin de conserver les modifications.
Lecture de valeurs à partir d'un enregistrement
Vous devez utiliser la méthode Recordset.FindFirst pour créer un enregistrement, l'enregistrement actuel. Vous devez ensuite utiliser Recordset.Fields pour spécifier le champ à consulter.
12345678910111213141516 | Sous RecordSet_ReadValue ()Dim ourDatabase As DatabaseDim ourRecordset As RecordsetDéfinir ourDatabase = CurrentDbDéfinissez ourRecordset = ourDatabase.OpenRecordset("ProductsT", Type:=RecordsetTypeEnum.dbOpenDynaset)Avec notreRecordset.FindFirst "ProductName = " & "'Product CCC'"Si .NoMatch AlorsMsgBox "Aucune correspondance trouvée"AutreMsgBox ourRecordset.Fields("ProductCategory")Fin siTerminer parFin du sous-marin |
Le résultat est:
Fatigué de rechercher des exemples de code VBA ? Essayez AutoMacro !
Suppression d'un enregistrement d'un jeu d'enregistrements
Pour supprimer un enregistrement d'un Recordset, vous devez d'abord en faire l'enregistrement actuel à l'aide de la méthode Recordset.FindFirst. Vous pouvez ensuite le supprimer à l'aide de la méthode Recordset.Delete. Le code suivant montre comment supprimer l'enregistrement 2 dans l'ensemble de données :
1234567891011121314151617181920212223 | Sous RecordSet_DeleteRecord ()Dim ourDatabase As DatabaseDim ourRecordset As RecordsetDéfinir ourDatabase = CurrentDbDéfinissez ourRecordset = ourDatabase.OpenRecordset("ProductsT", Type:=RecordsetTypeEnum.dbOpenDynaset)Avec notreRecordset.FindFirst "ProductName = " & "'Product BBB'"Si .NoMatch AlorsMsgBox "Aucune correspondance trouvée"AutrenotreRecordset.DeleteFin siTerminer par'Réouvrir le tableauDoCmd.Close acTable, "ProduitsT"DoCmd.OpenTable "ProduitsT"Fin du sous-marin |
Le résultat est: