Apporter des modifications en bloc à un jeu d’enregistrements DAO

Après avoir créé un objet Recordset de type table ou feuille de réponse dynamique, vous pouvez modifier, supprimer ou ajouter de nouveaux enregistrements. Vous ne pouvez pas modifier, supprimer ou ajouter des enregistrements à un objet Recordset de type Capture instantanée ou Avant uniquement.

Nombre des modifications que vous pouvez effectuer dans une boucle peuvent être apportées plus efficacement en utilisant une requête Mise à jour ou Suppression avec SQL. L’exemple suivant crée un objet QueryDef pour mettre à jour la table Employees, puis exécute la requête.

Dim dbsNorthwind As DAO.Database 
Dim qdfChangeTitles As DAO.QueryDef 
 
   Set dbsNorthwind = CurrentDb 
   Set qdfChangeTitles = dbsNorthwind.CreateQueryDef("") 
 
   qdfChangeTitles.SQL = "UPDATE Employees SET Title = " & _ 
                         "'Account Executive' WHERE Title = " & _ 
                         "'Sales Representative'" 
 
   ' Invoke query. 
   qdfChangeTitles.Execute dbFailOnError 

Dans cet exemple, vous pouvez remplacer l’intégralité de la chaîne SQL par une requête de paramètre stockée, auquel cas la procédure invite l’utilisateur à entrer des valeurs de paramètre. L’exemple suivant montre comment l’exemple précédent peut être réécrit en tant que requête de paramètre stockée.

Dim dbsNorthwind As DAO.Database 
Dim qdfChangeTitles As DAO.QueryDef 
Dim strSQLUpdate As String 
Dim strOld As String 
Dim strNew As String 
 
   Set dbsNorthwind = CurrentDb 
 
   strSQLUpdate = "PARAMETERS [Old Title] Text, [New Title] Text; " & _ 
                  "UPDATE Employees SET Title = [New Title] WHERE " & _ 
                  "Title = [Old Title]" 
 
   ' Create the unstored QueryDef object. 
   Set qdfChangeTitles = dbsNorthwind.CreateQueryDef("", strSQLUpdate) 
 
   ' Prompt for old title. 
   strOld = InputBox("Enter old job title:") 
 
   ' Prompt for new title. 
   strNew = InputBox("Enter new job title:") 
 
   ' Set parameters. 
   qdfChangeTitles.Parameters("Old Title") = strOld 
   qdfChangeTitles.Parameters("New Title") = strNew 
 
   ' Invoke query. 
   qdfChangeTitles.Execute 

Remarque

Une requête Suppression est beaucoup plus efficace qu'un code qui s'exécute en boucle dans un jeu d'enregistrements et modifie ou supprime un enregistrement à la fois.

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.