Temps
nécessaire pour suivre cette leçon : Entre une heure et une
heure et quart
Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données ProFormation.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici
Dans cette leçon, nous allons apprendre à gérer certaines propriétés de manière plus élaborée. Nous allons commencer par un cas concret d'utilité de blocage d'un champ. |
Prenons un exemple : imaginez que dans votre table des célébrités (qui pourrait être une table des clients), vous vouliez connaître la date et l'heure à laquelle ce nouveau client a été créé.
Comment feriez-vous ?
...Et vous créez un formulaire basé sur cette table.
Bien. Maintenant, imaginez que ce n'est pas vous qui saisissez les données, mais votre secrétaire, et vous n'avez pas envie qu'elle écrive n'importe quoi dans cette date de création (Parce que c'est une maligne : quand elle saisit des nouveaux clients lundi matin, elle met la date de création à vendredi soir, pour vous faire croire qu'elle a bossé tard vendredi !), ou alors qu'elle oublie carrément de l'indiquer.... (Magouilleuse ET tête en l'air... AË AÏE AÏE !!!!) Pouvez-vous lutter contre ça, et imposer la véritable date de création sans qu'elle puisse tricher ?
Si vous bloquez le champ, elle ne pourra plus rien écrire dedans, même pas la bonne date... Pas terrible !
En fait, il faudrait que le champ DateCreation soit DEJA rempli avec
la date et l'heure actuelle. Pour ce faire, nous allons utiliser une
option de champ que nous n'avons pas utilisé jusqu'à présent,
c'est la valeur par défaut : .
Vous savez ce que c'est, la valeur par défaut ?
C'est ça. On recourt à la valeur par défaut lorsque l'on a un champ qui contient souvent la même chose.
Par exemple, imaginons que vous avez un champ "Ville", et que 9 clients sur 10 habitent Paris en moyenne : au bout d'un moment, vous en avez marre d'écrire tout le temps Paris, Paris, Paris ...Alors, vous préciserez que pour ce champ Ville, la valeur par défaut est Paris. De cette manière, pour tous les nouveaux clients, il sera déjà écrit Paris dans le champ Ville, sans qu'on ait besoin de le saisir...
Et quand de temps en temps, un client vient d'ailleurs, il suffit de remplacer Paris par une autre ville.
Ah non ! Il ne touche pas les enregistrements déjà saisis ! Si les villes étaient vides, elles restent vides. C'est seulement pour les NOUVEAUX clients qu'il sera proposé Paris par défaut.
Si vous voulez, vous pouvez essayer.
Oui ! Et comme il s'agira de la valeur par défaut, dès qu'un nouveau client sera créé, il aura comme date de création la date et l'heure actuelle, c'est ce qu'on veut, et pour empêcher qu'on puisse modifier cette valeur par défaut, dans le formulaire, on va BLOQUER DateCreation (Activé Non, Verrouillé Oui).
Ca, c'est efficace !
Dans la valeur par défaut de votre nouveau champ DateCreation, écrivez
simplement Maintenant()
: (Now()
si vous avez une version anglaise)
Lancez la table en mode saisie de données, et regardez dans la dernière
colonne d'un nouvel enregistrement :
C'est le principe même des valeurs par défaut. C'est exactement comme l'exemple des villes plus haut.
Maintenant que vous avez votre DateCreation avec comme valeur par défaut
: Maintenant(), quittez la table,
et créez un nouveau formulaire en mode création, basé sur
T_Celebrite, et installez les champs Nom, Prenom et DateCreation : .
Lancez le formulaire en mode saisie de données, et allez sur un nouvel
enregistrement :
.
Ecrivez
: Et voilà
!
Maintenant, il s'agit de bloquer le champ date de création, et de lui donner une apparence "Fixe".
C'est un bon exercice pour vous : En mode création, demandez le Activé
: Oui, Verrouillé : Non, et donnez-lui l'apparence esthétique
suivante : . Comment
j'ai fait pour encadrer les 2 champs à la fois ? Ah ahhhhh ! Vous avez
la mémoire courte on dirait...
Bienvenue dans le monde !
Elle peut aussi craquer une allumette et bouter le feu à votre bureau. C'est la dure loi des développeurs : à peine ont-ils trouvé un moyen de protéger leurs applications qu'ils pensent déjà à la manière possible de contourner leurs propres sécurités...
Il y a des parades, mais nous verrons ça plus tard.
Pour l'instant, nous pensons à construire. Nous protégerons notre édifice plus tard..
Oui. Ca va me permettre de vous expliquer un peu mieux toutes les propriétés possibles de tous les objets.
Revenez en mode création, et demandez les propriétés générales
du formulaire (Rappelez-vous,
nous en avons déjà eu besoin lors d'insertion d'images en arrière-plan,
à la leçon 34).
Dans l'onglet Données, mettez Non dans Modif. autorisée
: . Lancez le formulaire
en mode saisie de données, et essayez d'écrire quelque chose d'autre
à la place de Napoléon, ou de Bonaparte. Vous pouvez ?
Oui. Ca empêchera de cliquer dans la zone de gauche, et d'appuyer sur
Delete :
Non, mais là vous n'effacez pas un enregistrement : Vous créez un enregistrement avec des champs vides... C'est comme si vous le modifiez en quelque sorte...
Exactement. Essayez ! Lancez le formulaire en mode création, et regardez
en bas : Le bouton de création de nouvel enregistrement est en grisé
:
Avant d'aller plus loin, prenez soin de rendre toutes les autorisations : Qu'on puisse supprimer, ajouter ou modifier les données !
Ce que je voulais surout vous montrer, c'est que chaque objet a des propriétés
définies dans différents onglets : Format - Données - Evénements
- Autres et Toutes : .
Pour mieux vous les illustrer, affichez les propriétés du champ
Prenom :
Onglet | Explication | Exemple |
Format |
Cet onglet représente l'ensemble des propriétés esthétiques, comme par exemple la couleur du texte, la couleur de fond, si c'est gras, italique, souligné ? Mais aussi la taille en largeur, en hauteur, la position à partir du bord du formulaire. Certaines propriétés courantes telles que le gras, italique
souligné sont disponibles directement dans la barre d'outils ( |
Dans le cas du champ Prenom, vous avez par exemple dans l'onglet format,
Marge gauche : Si vous la mettez à 0.3cm : Mais attention : Si vous sélectionnez le formulaire Eh oui : la propriété Marge gauche par exemple, n'est pas applicable aux formulaires entiers... ce serait idiot ! Et inversement, vous allez rencontrer des propriétés telles que "Image d'arrière plan" qui, elle, n'existe QUE pour le formulaire entier... On ne peut en effet pas déterminer d'image d'arrière-plan pour un simple champ. Revenons au champ Prenom, et faisons une expérience : Epaississez
à la main ce champ en hauteur, et lancez le formulaire en mode
saisie de données : Si on voulait le centrer, on sait qu'on peut utiliser l'icône Bon ceci dit, vous pouvez aussi tricher avec la propriété "Marge Haut", mais ne le répétez à personne... |
Données |
Cet onglet représente l'ensemble des propriétés plus techniques, comme le fait d'activer ou de verrouiller un champ. Dans le cas d'un formulaire, il contient les propriétés permettant d'autoriser ou d'interdire la suppression, la modification, etc. des données. Dans le cas d'un champ, il y a la propriété Source contrôle qui vous rappelle de quel champ il est issu (bon, ça c'est facile, c'est directement marqué sur le champ en mode création...)
|
Vous vous rappelez de la propriété Valide Si ? Dans les tables, quand on gérait la taille (leçon 4), il y avait déjà cette propriété. Mais alors, pourquoi y a-t-il une propriété Valide Si également dans le formulaire ? Reprenons l'exemple de votre secrétaire qui est parfois dans la lune : Dans le formulaire qu'elle utilise, il ne faut pas qu'elle puisse mettre n'importe quel salaire ! On va la brider, et l'empêcher d'écrire un salaire supérieur à 10'000 francs (n'hésitez pas à revoir la leçon 4 si vous ne vous rappelez plus très bien). Par contre, dans la table, c'est vous qui y allez, et vous, vous savez qu'il peut y avoir des salaires qui vont jusqu'à 30'000 francs, mais ils sont rares : D'ailleurs, nous avons mis comme Valide Si : 0 ou entre 2000 et 30000. Alors, donc, dans le formulaire dans lequel vous êtes, ajoutez
le champ SalaireMensuel : Dans ses propriétés, dans l'onglet données, précisez
les paramètres suivants : Lancez le formulaire en mode saisie de données : Et essayez de dire que Napoléon gagne 12000 francs : Vous aurez un message d'erreur ! Et si elle n'était pas distraite : - Patron ! J'essaie d'ajuster le salaire de Napoléon
à 12000 francs, mais votre programme me dit que je suis distraite...
Il n'est pas très poli ! |
Evénement |
Cet onglet s'adresse exclusivement aux utilisateurs très avancés qui ont quelques notions de programmation : C'est une musique de (proche) avenir... On peut, avec cet onglet, faire faire des choses automatiquement (des macros ou du Visual Basic) à certains moments : Quand on double clique dans un champ, quand on change d'enregistrement, quand on ouvre le formulaire, quand on clique sur un bouton... Oubliez ça pour le moment. |
|
Autres |
Cet onglet représente simplement les propriétés qui n'ont pas vraiment de place dans les autres onglets. C'est une sorte de fourre-tout... Par exmeple, vous avez une propriété qui ne fait simplement rien : C'est la propriété Remarque : vous pourriez y écrire un commentaire sur un champ, Par exemple, sur le champ prénom, vous pourriez mettre comme Remarque : "Penser à créer un champ 2ème prénom pour les cas ou les clients ou 2 prénoms".. C'est tout. |
Il y a une propriété "Autres" sympathique
: C'est l'info-bulle. Une info-bille, c'est la petite explication qui
apparait quand vous laissez la souris immobile au dessus d'une icône
par exemple, comme ceci : Mettez "L'état civil du client" dans Texte d'info-bulle
de l'onglet Format du champ EtatCivil : |
Toutes |
Cet onglet est simplement l'ensemble de toutes les propriétés des onglets Format, Données, Evénements et Autres. Comme ça, si vous recherchez une propriété dont vous n'êtes pas sûr de l'onglet dans lequel elle se trouve, vous avez toute la liste ici ! Attention ! C'est super mal-foutu : les propriétés ne sont pas du tout rangées par ordre alphabétique !ü Dans aucun onglet d'ailleurs ! |
Il faut donc faire très attention à ce que vous sélectionnez avant de demander les propriétés !
Si par exemple, vous sélectionnez les champs SalaireMensuel et EtatCivil
, et que vous demandez
les propriétés
,
vous avez les propriétés communes (Sélection multiple)
des deux champs (Ici, l'onglet format). Vous avez notamment la propriété
Format, décimales, visible, etc...
Mais par contre, si vous sélectionnez un champ ET une étiquette
: Par exemple encadrez à la souris l'étiquette
Salaire mensuel ET le champ SalaireMensuel ,
et que vous demandez les propriétés, ALORS, vous n'aurez
que les propriétés COMMUNES aux deux éléments
! Par exemple, vous trouverez les propriétés Visible, Couleur
de fond, Police de caractères, mais vous ne verrez PAS les propriétés
qui ne sont applicables qu'aux champs, telles que Format, ou Décimales
(nombre de décimales) qui ne sont PAS des propriétés d'étiquettes...
D'ailleurs, les étiquettes n'ont aucune propriétés de Données : Essayez : Si vous sélectionnez à la fois un champ et une étiquette et que vous demandez les propriétés et que vous cliquez sur Données, vous ne verrez rien..
En fait c'est logique : Dans la vie de tous les jours, vous faites aussi comme ça : votre chat à une propriété "Couleur de poils", et votre chien aussi... Par contre pas votre télé! Mais la télé, elle, a une propriété "Taille de l'écran" que n'ont pas vos animaux domestiques... Et vos 3 "choses" ont des propriétés communes : Le poids, le prix, l'age...
Gardez cet exemple amusant à l'esprit, il vous permettra d'appréhender le fonctionnement d'Access plus facilement, et, par extension, d'autres programmes.
Attention aux subtilités : Si vous voulez mettre une image de fond sur
votre formulaire, il faudra demander "Image", onglet Format, des propriétés
du formulaire ,
tandis que si vous voulez changer simplement la couleur du fond de l'écran,
c'est la propriété Couleur fond, de l'onglet format, de la zone
Détail qu'il faut modifier :
Comme vous le constatez, il y en a une sacrée quantité... Par
exemple, vous pouvez supprimer les boutons en bas du formulaire : .
Pour faire disparaître ça, vous avez une idée ?
Oui, c'est une propriété du formulaire, mais laquelle ? Quel onglet ?
Je vais vous aider : Ce n'était pas dans l'onglet Données, mais dans l'onglet Format, et ça s'appelle "Boutons de déplacement". Essayez de les masquer !
De toute façon, vous pouvez toujours vous déplacer avec les boutons
Page Up et
Page Down
C'est la propriété "Afficher Sélecteur" de l'onglet Format du formulaire.
Si : En allant dans le menu Edition/Supprimer l'enregistrement.
Vous avez juste supprimé esthétiquement la barre de sélection, mais vous pouvez toujours techniquement effacer vos enregistrements (C'est d'ailleurs pour ça que cette propriété se trouve dans l'onglet Format)...
Et vous pouvez faire exactement l'inverse ! si vous laissez visible la barre de sélection (Afficher sélecteur), mais que vous demandez la propriété "Suppression autorisée" à Non, alors, vous verrez toujours cette barre de sélection, mais même si vous essayez de cliquer dessus et d'appuyer sur la touche Delete, ca ne marchera pas !
Ce qui serait plus logique, c'est de supprimer la barre de sélection, ET de demander "Suppression autorisée" à Non...
Fermez votre formulaire, et nommez-le F_CelebriteProprieteAvancee
Nous avons donc vu l'utilité de la "Valeur par défaut", qui est une propriété de champ de table principalement, ainsi que son couplage aux propriétés Activé et Verrouillé, qui sont des propriétés de formulaire. Dans la foulée, nous avons étudié la fonction Maintenant() qui renvoie la date et l'heure actuelle. Nous avons vu également comment on restreint un formulaire : autorisation/interdiction de : ajouter des données, supprimer des données, modifier des données. Nous avons vu plus en détail les propriétés, comment elles se structurent en 4 onglets : Format, Données, Evénements et Autre (Le dernier onglet n'étant que l'ensemble de toutes les propriétés). Nous avons vu la propriété Marge gauche et marge haut, "Valide Si" et "Message si erreur" dans le formulaire cette fois (nous les avions vu dans les tables avant), la propriété "Texte d'info-bulle", la propriété de formulaire "Boutons de déplacement", "Sélecteur d'enregistrement". |
|
L'exercice consiste à créer une base de données Finance.mdb, qui va contenir une table T_Client avec les champs et les données ci jointes :
Votre travail consiste à créer un nouveau formulaire Exigences particulières : Table :
Formulaire : Je vous conseille de partir sur une base de formulaire instantané : Tableau
Voici l'aspect général du formulaire que vous devez obtenir (Vous l'appellerez F_ClientProtege) : |
Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de ProFormation.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.
Avez-vous une question technique
concernant cette leçon ? Cliquez
ici !
Une remarque sur cette leçon ? Un problème
? Une erreur ? une ambiguité ? Soyez
gentil de m'en informer