Créer un nouvel enregistrement dans une table et y encoder des données semble la chose la plus banale qui soit. Cela pose tout de même un souci : les données saisies peuvent être changées à tout moment...
Si, grâce à nos rubriques de traçabilité (date et auteur de modification), on peut savoir qui a changé quelque chose et quand (tout au moins lors de la dernière modification), cela nous fait une belle jambe si les modifications flanquent toute la base en l'air ou perdent des données primordiales !
On semble ici tourner en rond : il faudrait pouvoir encoder des données, mais ne pas pouvoir les changer par après... Il y a une possibilité : encoder les données par une fenêtre pop-up après la création d'un nouvel enregistrement vide, alors que les rubriques sont non modifiables sur le modèle. Illustrons cela par un exemple.
Description
On veut laisser aux utilisateurs la possibilité de créer des nouvelles classes (créez de nouveau enregistrements), mais leur interdire la possibilité de modifier ces données sur le modèle par la suite. La méthode : depuis le modèle CLA_Fiche, dont on va rendre les rubriques inaccessibles, on crée un nouvel enregistrement et on ouvre une boite de dialogue pour y encoder les données.
Sur notre fichier, on se rend sur le modèle CLA_Fiches. En mode modèle, on sélectionne les rubriques qui nous intéressent : Nom, Annee et Local (si le bâtiment change, ce n'est pas très grave). Dans le menu contextuel "Rubriques/Contrôles => Comportement...", on décoche "Autoriser la saisie : en mode Utilisation. Voilà. En mode utilisation, impossible de saisir ou modifier quoi que ce soit dans ces rubriques.
La suite nécessite un script (ça tombe bien, nous sommes dans la section des scripts).
Le script
Voici le script :
Celui-ci est simple :
- On se rend sur le modèle CLA_Fiche
- On crée immédiatement un nouvel enregistrement
- On ouvre la boite de dialogue personnalisé (commande Ouvrir boîte dial. person. dans la catégorie Divers, tout en dessous).
- Dans le premier onglet de la fenêtre de configuration de la boite de dialogue, on y entre son titre (le nom de la fenêtre), son texte et ses boutons.
- Comme titre, rien de plus simple que "Nouvelle classe", un titre bien descriptif
- Comme texte, on peut mettre "Encodez les données de la nouvelle classe", toujours pour être le plus explicite possible vis à vis de l'utilisateur.
- On voit que l'on a possibilité de créer 3 boutons, dont 1 par défaut est "OK" et l'autre "Annuler".
- Gardons "Annuler", et remplaçons "OK" par "Créer". Une chose doit être expliquée ici : en tant que tel, au sein d'un script, ces boutons apparaîtrons, mais n'ont, en soi, strictement aucune action ! C'est à nous de gérer cela. Comment ? Grâce à la commande "Obtenir ( DernierChoixMessage )" Le "Dernier choix message" = 1 est le clic sur le premier bouton à gauche, le bouton par défaut. Le "Dernier choix message" = 2 est le clic sur le bouton 2 et le "Dernier choix message" = 3 est le clic sur le bouton 3... D'accord, ça ne tombe pas sous le sens, mais c'est comme ça ! Et puis nous l'avons déjà vu !!!
Par contre, nous allons maintenant aborder du nouveau : les rubriques de saisies dans une boîte de dialogue...
- On clique ensuite sur le 2e onglet de la fenêtre de configuration, "Rubriques de saisie":
- On y voit grosso modo 3 fois la même chose : "Affich. rub. de saisie n° 1", 2 et 3. Les boutons "Définir" permettent de facilement sélectionner la rubrique que l'on veut compléter.
- Dans notre cas, sélectionnons "Annee", "Nom" et "Local" de la table CLA__ (attention, ici aussi à bien fixer le contexte).
- Pour chacune des rubriques, on peut faire apparaître un titre, en complétant les cases blanches. Complétons avec "Année section", "Nom de la classe" et "Local" (toujours des noms explicites).
Bien, on peut refermer et passer à la suite du script. Notre boîte de dialogue nous permet deux choix : "créer" et "annuler".
- Raisonnons sur les boutons :
- Si le bouton "Créer" est cliqué, on n'intervient surtout pas et on laisse le script continuer son boulot
- Si le bouton "Annuler" est cliqué, il faut agir d'urgence et tout stopper. Mais n'oublions pas que notre deuxième ligne a créé un nouvel enregistrement... Aussi, il nous faut le supprimer avant d'arrêter le script, par la commande "Supprimer enreg./requête", et sans dialogue, s'il vous plait !
- Le troisième bouton n'apparaîtra pas, vu qu'on ne l'a pas défini.
- Il suffit donc de tester uniquement le choix 2, annuler pour intervenir entre Si et Fin de si.
La mise en place
On crée un beau bouton sur le modèle CLA_Fiche, avec "Nouvel Enregistrement", et avec notre script comme action de bouton. Voici ce que ça donne lorsque le bouton est cliqué :
La fenêtre de dialogue est ouverte et on voit bien les 3 rubriques que l'on peut compléter, ainsi que les deux boutons que l'on a définis. Il suffit de remplir les rubriques, de valider et le tour est joué !
Voilà un fichier qui permet de créer des rubriques en les protégeant contre la modification. Mais c'est un peu limité quand même, ne serait-ce que si nous voulons plus de trois rubriques ? Voyons donc la fenêtre pop-up.