Leçon 3
 
Principes d'enregistrements, duplications et suppressions

Dans cette leçon, nous allons voir en détail comment Access enregistre la structure des tables, mais aussi les données.

Nous verrons comment annuler d'éventuelles bêtises que nous faisons.

Nous verrons comment effacer et dupliquer un enregistrement, mais aussi comment dupliquer une table et même toute la base de données (principalement pour des raisons de sécurité)

 
Sommaire

Pour suivre cette leçon, vous allez ouvrir votre base de données Formagiciel.accdb, ou, vous allez la télécharger à l'aide du bouton ci-dessus.

A partir de maintenant, je pars du principe que vous savez ou vous en êtes avec cette base de données.

Vous êtes donc dans Formagiciel, telle qu'elle était à la fin de la leçon précédente (C'est à dire qu'il y a une table T_Client, pourvue des champs NomClient et Prenom, et 3 enregistrements (Edith Piaf, Elvis Presley et Steven Spielberg).

 

Allez dans la table T_Client en mode création.

Ajoutez le champ VilleHabitation :

Basculez en mode Saisie de données :

Access vous demande d'enregistrer la table. Dites Oui.

 

 

Vous êtes maintenant en mode Saisie de données. Ajoutez Michael Jackson. Oui, je sais, il nous a malheureusement quitté, mais il reste dans nos coeurs et dans nos tables.

Enregistrements de la structure et des données

Revenez en mode création : Constatez qu'il ne vous demande pas, cette fois, d'enregistrer la table.

Ainsi, vous devez enregistrer explicitement tout ce qui est changement de structure de la table (comme l'ajout d'un champ, sa suppression, ou sa modification (orthographique par exemple : changer Prenom en PrenomClient)

Mais, à contrario, il n'y a pas besoin d'enregistrer explicitement les données (L'ajout de Michael Jackson par exemple)

Nous allons voir plus précisément à quel instant il sauvegarde les données. Lancez la table en mode saisie de données, et cliquez à la fin du mot Presley.

Ecrivez simplement la lettre x. Vous constatez donc le petit crayon à gauche :

Ce petit crayon veut dire : "OK, tout est enregistré correctement, sauf le petit x que vous avez rajouté."

 

Appuyez maintenant sur la touche tabulation de votre clavier : vous vous retrouvez sur Elvis, et

le petit crayon est toujours là.

Si maintenant, vous changez d'enregistrement, c'est à dire que vous appuyez sur la touche flèche en bas de votre clavier, ou que vous cliquez sur Steven Spielberg, alors, le petit crayon disparaît : c'est le signe que maintenant, et seulement maintenant, le x à la fin de Presley a été correctement enregistré.

Donc, si vous effectuez des modifications dans un enregistrement, tant que vous restez dans un des champs de ce même enregistrement, Access n'enregistre pas. C'est à l'instant où vous quittez l'enregistrement qu'il sauvegarde réellement les données.

 

Méthodes d'enregistrement des données

Pour vous dire la vérité, il y a plein de moments où il enregistre concrètement vos données :

 

Jusqu'à la version 2003, la disquette et le raccourci CTRL-S n'enregistraient pas les données, ce qui était troublant.

Mais aussi, si le coeur vous en dit, il sauvegarde également :

  • Quand vous cliquez sur la disquette
  • Quand vous appuyez sur CTRL-S
  • Quand vous appuyez sur SHIFT-ENTER (Mais bon... a-t-on besoin d'un 2ème raccourci clavier ? ...)

 

Exercice - allez dans Presley, changez chaque fois sa lettre de fin, et enregistrez ce changement à l'aide de ces différentes techniques.

Largeur des colonnes

Constatez que la 3ème colonne, qui contient le champ VilleHabitation est un peu trop étroit (C'est écrit VilleHabitat au lieu de VilleHabitation) :

 

Elargissez cette colonne, comme vous feriez avec Excel, en utilisant la souris :

 

Maintenant, revenez en mode création : il ne vous pose aucune question. Mais maintenant, fermez la table . Alors, seulement maintenant, il vous demande de l'enregistrer, alors que vous n'avez pas fait de modification au niveau de la structure.

En fait, si ! 

Le simple fait de changer la taille d'une colonne, c'est, quelque part, modifier la "structure" de la table.

Revenons à nos données

Le talon d'Achille (la faiblesse) de cet enregistrement automatique est que, justement, c'est presque trop automatique. Avec Word ou Excel, quand vous faisiez une grosse bêtise, vous aviez bien entendu le bouton "Annuler", mais vous pouviez également fermer le document sans l'enregistrer, et ensuite le rouvrir.

 

 

Lancez votre table en mode saisie de données. Complétez les villes d'Edith Piaf et d'Elvis Presley, et positionnez-vous sur la ville de Steven Spielberg, comme ceci :

Oui, je sais, ce ne sont pas les villes d'habitation réelles, mais comme j'habite en Suisse, j'aime bien indiquer des villes suisses.

Répétition du contenu d'un champ

Si on était dans Excel, on aurait pu utiliser la petite croix noire (poignée de recopie), pour tirer Lausanne vers le bas. Access ne propose pas cette possibilité (Microsoft l'a-t-il fait exprès ?)

Steven habite Lausanne, comme Elvis.

Plutôt que d'écrire à nouveau Lausanne, Appuyez sur le raccourci clavier CTRL-Apostrophe (Attention : je prends en exemple le clavier Suisse-Romand. Sur les claviers d'autres origines, l'apostrophe se trouve peut-être ailleurs).

 

Et voilà ! Lausanne est maintenant répété pour M.Spielberg :

 

Complétez également la ville de Michael Jackson : Neuchâtel.

Annulations

Maintenant, nous allons "accidentellement" remplacer Lausanne de Spielberg par XXX, et ensuite remplacer Steven par YYY et Spielberg par ZZZ.

 

Comme les trois modifications ont été effectuées dans le même enregistrement, Access n'a pas encore enregistré sur votre disque dur (il y a le petit crayon).

 

Si maintenant, alors que votre curseur clignote à droite de ZZZ|, vous appuyez sur la touche Esc(échap) , ZZZ redevient Spielberg , et si vous appuyez une 2ème fois sur Esc, alors, c'est toute la ligne (tout l'enregistrement) qui redevient ce qu'il était avant , et le petit crayon disparait.

Si vous continuez a appuyer sur Esc, plus rien ne se passe (Access ne va pas commencer à annuler les autres changements des autres enregistrements). Ce n'est donc pas équivalent à la petite flèche Annuler 

Avec cette méthode, vous pouvez rapidement "rattraper le coup", lorsque vous saisissez des données par erreur sur un enregistrement existant.

Le raccourci-clavier pour annuler est

Si l'enregistrement a été enregistré, la touche Esc est donc inopérante. Heureusement qu'il nous reste cette fameuse petite flèche Annuler ! .

Faisons un test

  1. Remplacez Spielberg par AAA
  2. Enregistrez (CTRL-S par exemple)
  3. Remplacez AAA par BBB
  4. Enregistrez à nouveau (cliquez sur la disquette par exemple)

Appuyez sur : ça ne marche pas (normal).

Cliquez sur Annuler  : BBB redevient AAA.

Appuyez une seconde fois sur Annuler .

Mauvaise surprise ! Rien ne se passe !

Aïe Aïe Aïe ! Avec Excel, nous sommes habitués à pouvoir annuler autant qu'on veut, en plus d'avoir la possibilité de fermer et de rouvrir le classeur sans l'enregistrer !

Avec Access, c'est nettement moins souple : une seule annulation est possible ! (Suivant le contexte, il sera possible d'annuler plusieurs fois, mais dans d'autres contextes, il ne sera carrément pas possible d'annuler du tout)

Dans ce cas précis, nous n'avons pas d'autre solution que de réécrire Spielberg à la main. Il n'y a pas de plan B !

Nous allons voir que c'est pire encore avec l'effacement !

Admettons que nous voulions effacer un enregistrement : Elvis Presley.

Effacement d'un enregistrement

Pour effacer un enregistrement, il y a deux méthodes : la bonne et la mauvaise.

Voici la mauvaise méthode (mais que beaucoup de monde fait par erreur) :

  1. Je sélectionne Presley
  2. J'appuie sur Del
  3. Je sélectionne Elvis
  4. J'appuie sur Del
  5. Je sélectionne Lausanne
  6. J'appuie sur Del

Outre le fait que ça demande plusieurs manipulations, le souci va être que l'enregistrement ne va pas être supprimé, à proprement parler, mais va être transformé en enregistrement tout vide !

Cliquez sur Steven Spielberg et regardez en bas de votre écran : vous voyez le nombre d'enregistrements de votre table.

Vous êtes sur le 3ème enregistrement d'un total de 4 : il a pris en compte cette satanée ligne vide !

Le 5ème enregistrement n'existe pas (encore). Si vous cliquez sur le nouvel enregistrement, il va écrire que vous êtes sur le 5ème enregistrement d'un total de 5 (ce qui est moyennement juste, puisqu'il n'y a pas encore 5 enregistrements : rien ne prouve que vous allez écrire quelque chose)... Mais c'est ainsi qu'il compte.

Cette mauvaise méthode d'effacement m'a permis de vous montrer le comptage des enregistrements.

Maintenant, voici la bonne méthode d'effacement d'un enregistrement. Avec cette bonne méthode, nous allons, justement, supprimer correctement cette ligne vide qui nous gêne.

Cliquez sur le petit carré gris à gauche de l'enregistrement vide :

 

Maintenant que la ligne est bleu clair, appuyez sur la touche .

Comme précisé dans le message : "Vous ne pourrez pas annuler le changement". Essayez d'annuler, pour le voir par vous-même.

Un message d'avertissement s'affiche.

Répondez simplement oui, et le tour est joué.

Comme vous le constatez, c'est très dangereux ! On a vite fait de perdre de précieuses données !

Aussi, il va nous falloir une sérieuse méthodologie de sauvegardes, que nous verrons un peu plus tard.

Avec la même méthode de sélection, au lieu de supprimer un (ou plusieurs) enregistrements, on peut dupliquer des enregistrements existants.

Duplication d'enregistrements

Admettons que vous désiriez ajouter comme client le fils de Steven Spielberg (Max Spielberg). Ce serait pratique de dupliquer Steven Spielberg, et de changer le Prenom du nouvel enregistrement :

 

Le raccourci-clavier pour copier est
  1. Sélectionnez l'enregistrement Steven Spielberg
  2. Cliquez sur Copier
  3. Cliquez sur la petite flèche en bas de Coller, et choisissez Coller par ajout :

Et voilà le travail !

 

Il ne reste plus qu'à remplacer Steven par Max dans le nouvel enregistrement :

 

Revenons à nos suppressions !

 

Que faire si nous supprimons d'importants enregistrements par mégarde ?

Je dois vous le confesser : Access est bien mal armé ! C'est à vous de faire des sauvegardes régulières !

Vous avez la possibilité de dupliquer vos tables et/ou vos bases de données.

Duplication d'une table

Imaginons que vous ayez une grande table de clients (avec des milliers des clients), et que vous vouliez faire y faire un peu de ménage (effacer les éventuels clients à double, corriger certaines fautes d'orthographes, etc.)

Il serait prudent de faire une copie de la table avant de vous lancer dans cette entreprise ! Comme ceci :

 

Avant de faire cette copie, assurez-vous qu'il n'y ait pas le petit crayon, signe que vous êtes en train de faire une modification, car dans ce cas, la copie de la table ne prendrait pas en compte cette modification
  1. Cliquez sur T_Client dans le volet de navigation
  2. Cliquez sur Copier
  3. Le raccourci-clavier pour coller est
  4. Cliquez sur Coller
  5. Donnez comme nom T_ClientBACKUP 

Et voilà : vous avez maintenant une copie conforme de votre table T_Client :

.

Onglets

 

Si vous double-cliquez dessus, cette table va s'ouvrir sous la forme d'un onglet supplémentairecomme ceci :

 

Bien.

Fermez T_ClientBackup 

Backup de table par sécurité

Maintenant, nous allons (Exprès) faire quelques bêtises dans T_Client !

Effacez Edith Piaf et Steven Spielberg.

Comme vous le savez, vous ne pouvez pas annuler !

Nous pourrions sélectionner Steven Spielberg et Edith Piaf, et les copier-coller d'une table à l'autre ! (Vous pouvez essayer de le faire, à titre d'exercice)

Imaginons que ce n'est pas simplement Spielberg et Piaf qui ont été effacés, mais que vous avez donné la tâche de nettoyage à faire à un stagiaire, et qu'il a fait tout plein d'autres bêtises dans la table !

 

Bref : T_Client a été vraiment très abîmée !

Comment la récupérer depuis T_ClientBackup ?

  1. Fermez vos tables si elles sont ouvertes
  2. Effacez T_Client (puisqu'elle est pourrie). Cliquez dessus, et appuyez sur DEL :
  3. Renommez T_ClientBackup en T_Client, grâce au bouton droit de la souris :
    Appuyez sur Enter pour valider
  4. Maintenant que vous avez récupéré votre table avant la catastrophe de saisie, pensez a refaire une nouvelle copie de sécurité de votre table, comme nous avons vu plus haut !

Backup de sécurité d'une base de données

Ce que nous venons de voir, c'était la première méthode.

L'autre méthode consiste à faire une copie de toute la base de données.

En effet, si vous faites le ménage dans une base de données qui contient beaucoup de tables, c'est peut-être bien plus pratique de dupliquer tout le fichier accdb.

Vous pouvez bien entendu dupliquer votre fichier .accdb depuis l'explorateur Windows (je suppose que vous savez faire )

Mais vous pouvez aussi la dupliquer depuis Access, comme ceci :

Vous choisissez ensuite un emplacement, un nom pour la copie (Backup Formagiciel dans cet exemple), et vous cliquez sur Enregistrer.

Lorsque vous cliquez sur Enregistrer, non seulement, il enregistre la copie de votre base de données, mais, en plus, il l'ouvre ! C'est à dire que maintenant, vous êtes dans le backup et pas dans l'original !

 

 

En général, ce n'est pas ce que vous voulez : pour revenir dans l'original, il suffit de cliquer sur Fichier, et de choisir le 2ème fichier dans la liste des bases de données récemment ouvertes, comme ceci :

Pour être certain d'être dans la "bonne" base de données, regardez simplement son nom dans la barre de titre :

Pour connaître précisément le nom et l'emplacement de la base de données dans laquelle vous êtes, cliquez sur le menu Fichier/Informations.

Si vous cliquez sur Afficher et modifier les propriétés, vous verrez également :

  • sa taille
  • sa date de création
  • Modifié le : sa date de modification (En fait, ce n'est pas intéressant, c'est juste l'heure exacte à laquelle vous venez de l'ouvrir ! C'est donc une appellation mensongère, ou buggée )
  • Accédé le : J'avoue humblement que je ne comprends pas cette information : j'ai fait plusieurs tests (création, modification d'enregistrements ou de structure de table, fermeture et ouverture de la base : cette date/heure ne change jamais chez moi.

Nous venons de voir en détail comment se passe l'enregistrement des données et de la structure  des tables. Nous avons vu à quel point la structure et les données sont différents.

Nous avons vu que l'annulation de bêtises n'est pas si souple que dans d'autres programmes, et qu'il est indispensable de maîtriser la copie et la sauvegarde de nos tables et de nos bases de données.

Nous avons également vu comment dupliquer et effacer facilement des enregistrements.

Exercice

Créez une base de données que vous appellerez ExerciceLecon003.accdb.

Créez-y une table T_Film, avec 3 champs :

  1. TitreFilm
  2. ActeurPrincipal
  3. AnneeSortie

Entrez-y un seul film, composé comme suit :

  • Rambo - Stallone - 1982

Entrez le 2ème film, en utilisant la technique du Ctrl Apostrophe :

Lorsque vous appuyez sur CTRL-Apostrophe, vous verrez qu'Access sélectionne (met en noir) Rambo. Vous devez cliquer à la fin de Rambo pour écrire "2". Plutôt que de cliquer, appuyez sur la touche
  • Rambo 2 - Stallone - 1985

Entrez le 3ème film en dupliquant l'un des deux premiers (technique de "Coller par ajout"), et en le modifiant à la main :

  • Rambo 3 - Stallone - 1988

Dupliquez la table T_Film en T_FilmBackup.

Allez dans T_Film, et Supprimez d'un seul coup Rambo 2 et Rambo 3. (Oups ! C'est une erreur... Impossible d'annuler)

  • Supprimez T_Film
  • Renommez T_FilmBackup en T_Film

Depuis Access, copiez ExerciceLecon003 en SauvegardeSecurite.

Vous êtes donc dans SauvegardeSecurite. Rouvrez ExerciceLecon003.


Image de ce que devrait contenir ExerciceLecon003 à la fin  de l'exercice :

Quizz
1. La modification de la largeur d'une colonne est considérée par Access comme une modification :
De la structure de la table
Des données de la table
Elle n'est pas considérée comme une quelconque modification

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 502

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 502

Warning: Undefined variable $Q1 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 503

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 503
2. Un enregistrement s'enregistre automatiquement :
Quand on change de champ, mais qu'on reste dans le même enregistrement
Quand on change d'enregistrement
Quand on change d'enregistrement ET obligatoirement de champ
Les enregistrements ne s'enregistrent jamais automatiquement (il faut cliquer sur la petite disquette, ou appuyer sur CTRL-S)

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 525

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 525

Warning: Undefined variable $Q2 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 526

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 526
3. Comme dans Excel, je peux "tirer les données vers le bas" avec la petite croix noire pour rapidement dupliquer mes données
Oui
Non
Oui, mais sur un seul enregistrement de plus (pas plusieurs comme avec Excel)

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 547

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 547

Warning: Undefined variable $Q3 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 548

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 548
4. Peut-on annuler l'effacement d'un enregistrement ?
Oui, mais une seule fois
Oui, le nombre de fois prévu dans les options d'Access (Fichiers/Options)
Non

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 569

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 569

Warning: Undefined variable $Q4 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 570

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 570
5. On peut dupliquer une table
Seulement si elle est ouverte
Seulement si elle est fermée
Peu importe qu'elle soit ouverte ou fermée, mais si on est en train de modifier un enregistrement, la modification ne sera pas présente dans la copie
Peu importe qu'elle soit ouverte ou fermée, mais si on est en train de modifier un enregistrement, la modification sera présente dans la copie

Warning: Undefined variable $Q5 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 593

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 593

Warning: Undefined variable $Q5 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 594

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 594
6. On peut dupliquer une base de données depuis Access avec :
Fichier - Dupliquer une base de données
Sécurité - Données - Copier une base de données
La petite disquette
Fichier - Enregistrer la base de données sous
Fichier - Enregistrer l'objet sous

Warning: Undefined variable $Q6 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 621

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 621

Warning: Undefined variable $Q6 in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 622

Deprecated: strspn(): Passing null to parameter #2 ($characters) of type string is deprecated in /home/clients/a41d66f74bcbcbdeacff232fbcd0dcfe/web/access/cours2010/lecon003/index.php on line 622