Accéder aux jeux d'enregistrements VBA - Ouvrir, compter, boucler et plus

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

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:

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:

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave