Créer une requête d’ajout sur Access

Publié le 02 avril 2014 par Lydia Provin @Votreassistante

Suite à la demande d’un abonné, nous allons découvrir à quoi sert une requête d’ajout sur Access et comment la créer.

Une requête d’ajout sur Access est une requête qui permet, selon un ou plusieurs critères, d’ajouter les enregistrements d’une table dans une autre table existante en conservant les enregistrements dans la table d’origine.

La différence avec une requête de création de table, c’est que la requête d’ajout ajoute les enregistrements à la suite des autres dans une table existante alors que la requête de création de table crée une nouvelle table. De même, avec ce type de requête, vous pouvez choisir la correspondance entre les champs de départ et de destination et vous pourrez relancer la requête sans que cela crée une nouvelle table.

Dans cet exemple, nous allons copier les clients de la Table Clients dont le dernier achat date d’avant le 1er janvier 2013 dans la Table À relancer.

Vous retrouverez la base de données utilisée dans l’Espace Membres.

Nous allons commencer par créer une requête de sélection (la plus simple) en allant dans l’onglet Créer > Création de requête .

Choisissez la Table Clients et double-cliquez sur chacun des champs. Dans les critères du champ Dernier achat, indiquez : <01/01/2013. Cela indique que l’on va sélectionner les enregistrements inférieurs au 1er janvier 2013.

Vous pouvez cliquer sur Exécuter   afin de constater si le résultat vous convient. Puis, repassez en Mode Création en cliquant droit sur l’onglet > Mode Création  et cliquez dans les choix de requête sur Ajout  .

Une boîte de dialogue apparaît, choisissez, dans le menu déroulant, À relancer et cliquez sur Ok.

 Au-dessus de la ligne Critères, vous avez une nouvelle ligne qui est apparue : Ajouter à.

Cette ligne vous permet de choisir le champ de destination. C’est-à-dire que je pourrais choisir de placer les numéros de téléphone dans le champ Email de la table de destination simplement en sélectionnant le champ dans le menu déroulant. Étant donné que j’ai juste copié la Table Clients et supprimé les enregistrements, les champs correspondent et je ne vais pas y toucher. Mais vous pouvez tout à fait créer une table de destination dont les noms des champs ne correspondent pas du tout aux champs de départ.

Vous pouvez cliquer sur Exécuter , puis ouvrir la Table À relancer sans fermer la requête.

Cliquez sur Oui : les données répondant au critère indiqué dans la requête se trouvent copiées dans cette table.

 

Pour réutiliser cette requête à un autre moment, vous pouvez l’enregistrer en cliquant droit sur l’onglet > Fermer ou Enregistrer .

Choisissez un nom pour votre requête. Je vais appeler la mienne MAJ (pour mise à jour).

 

Cliquez sur Ok.

Si vous modifiez certaines dates postérieures au 1er janvier 2013 pour des dates antérieures, vous pouvez relancer la requête en double-cliquant dessus  pour ajouter les nouveaux enregistrements répondant à ce critère. Vous aurez un premier message :

 

Cliquez sur Oui. Un second message apparaît :

Cliquez sur Oui.

Enfin, Access vous indique une erreur tout à fait normale. Access ne peut pas ajouter les enregistrements qui étaient déjà présents dans la Table À relancer.

On pourrait, par exemple supprimer le N° Client dans la Table À relancer et ce champ dans la requête. Mais, le souci, c’est que si vous relancez plusieurs fois la requête, étant donné qu’il n’y aura plus de clé primaire, vous allez vous retrouver avec des doublons.

De ce fait, je vous conseille de laisser ce message d’erreur puisque, de toute façon, seuls les enregistrements non encore présents dans la Table À relancer seront recopiés dedans.

Si vous souhaitez tous les recopier, effacez-les d’abord de la Table À relancer en sélectionnant toutes les lignes et en appuyant sur la touche Suppr, puis lancez la requête. Cette fois-ci le message d’erreur n’apparaîtra pas.

À noter que les enregistrements déjà présents dans la table avant le lancement de la requête ne seront pas modifiés. Donc si vous avez modifié des informations concernant ces enregistrements, supprimez les enregistrements de la table et lancez la requête.