Sommaire
- Formulaires : fomat monétaire des champs monétaires
- Formulaires : comparaison théorique entre les calculs effectués dans une requête et un calcul effectué directement dans un formulaire
- Formulaires : création d'un calcul directement dans un formulaire
- Formulaires : calcul basé sur un champ déjà calculé
- Formulaires : aspect esthétique conseillé des champs calculés
- Formulaires : les propriétés de champs Activé et Verrouillé
- Formulaires : différences fondamentales entre l'étiquette Aa et le champ Ab|
- La fonction date()
C'est fait. Mes souvenirs sont revenus à la surface !
Dans cette leçon, nous allons voir qu'il est possible d'effectuer également des calculs dans les formulaires. Pour bien comprendre, nous allons comparer strictement les calculs dans les requêtes et dans les formulaires. Nous allons reprendre l'exemple d'un champ qui va automatiquement calculer le salaire additionné d'une prime de 500 francs, à la fois dans un formulaire et dans une requête.Commencez par créer une nouvelle requête basée sur T_Celebrite, en mode création. Installez-y le Nom, le prénom et le salaire mensuel :



Fermez cette requête, et nommez-là R_CelebriteCalculPrime500Franc.
Maintenant, créez un nouveau FORMULAIRE en mode création, basé sur cette nouvelle requête R_CelebriteCalculPrime500Franc.
La liste des champs

Placez tous ces champs les uns en dessous des autres dans votre formulaire :


Formulaires : Fomat monétaire des champs monétaires
C'est normal le signe Euro € avant 10'000 ?
Non. C'est dans la requête que ce petit magouilleur d'Access acru bon de l'ajouter, je ne sais pas vraiment pourquoi. A vrai dire, je m'en fiche un peu dans la requête. Par contre, ici, dans le formulaire, c'est plus grave !Ce n'est vraiment pas esthétique. Nous allons lui régler son compte une bonne fois. Revenez en mode création, et demandez les propriétés du champ SalaireAvecPrime :



Et puis-je changerla valeur de ce salaire avec prime ?
Par exemple pour lui dire 12000 à la place de 10000 ?
Dans la requête, vous pouviez ?Non, dans la requête je ne pouvais pas !
Pourquoi ?Parce que c'est un calcul !
Oui, et il n'y a aucun champ dans la table pour accueillir ce résultat. Il y a juste un champ SalaireMensuel, et c'est tout. Ou pourrait-il bien stocker physiquement le résultat du calcul ?Nulle part, effectivement...
Donc ?Donc, dans le formulaire, on ne peut rien changer non plus !
Voilà ! Essayez : en mode saisie de données, essayez de changer 10000 en 12000 dans le salaire avec prime. Qu'est-ce qui se passe ?
Il m'affiche dans la barre d'état :
.
Ce qui est normal.Bien, maintenant, nous allons voir comment faire un calcul DIRECTEMENT dans le formulaire. Admettons que nous ayons créé notre formulaire directement sur la table T_Celebrite, et que nous n'avons PAS de champ calcule SalaireAvecPrime, mais nous en avons quand même besoin !
Formulaires : comparaison théorique entre les calculs effectués dans une requête et un calcul effectué directement dans un formulaire
Mais pourquoi ferait-on ça, puisqu'il suffit de créer une requête avec un champ calculé, et de baser le formulaire sur elle ???
Justement pour ne PAS à avoir à créer de requête ! Les informaticiens sont de gros fainéants ! Tant qu'on peut faire plus simple, on ne se gêne pas !Dans ce cas, pourquoi faire des requêtes avec des champs calculés, puisqu'il est plus simple de les faire dans les formulaires ?
Je n'ai pas de réponse nette à vous donner.Vous constaterez dans certains cas qu'il est plus simple et/ou plus efficace de faire des calculs dans les requêtes, et dans d'autres cas dans les formulaires... Il y a également des cas où on doit faire le calcul dans une requête, et d'autres cas pour lesquels il est obligatoire de le créer dans les formulaires, vous constaterez par vous-même avec l'expérience... C'est bon, je peux continuer ?
Formulaires : Création d'un calcul directement dans un formulaire
Allez-y, je me tais. Alors, comment-fait-on un calcul dans un formulaire ?
D'abord, affichez la boîte à outils (Affichage/Boîte à outils), et sélectionner l'icône Ab| :


Cliquez dans Indépendant, il s'efface tout seul :

Ecrivez dedans : =SalaireMensuel+500


Comme dans les requêtes qui contiennent des champs calculés, d'ailleurs.
Oui. Il rajoute les crochets quand il y a besoin : c'est à dire autour des champs.ATTENTION : Il rajoute des crochets automatiquement si, et seulement si vous avez pris soin de ne PAS mettre d'espace dans les noms de vos champs. Admettons que vous ayez nommé votre champ Salaire Mensuel à la place de SalaireMensuel, et que vous ayez écrit dans la zone Ab| =Salaire mensuel + 500, au moment d'appuyer sur ENTER, vous auriez écopé d'un message d'erreur :

Dans le cas ou vous avez des noms de champs avec des espaces, ce que je vous ai d'ailleurs toujours déconseillé, vous DEVEZ alors mettre ces crochets A LA MAIN : =[Salaire mensuel] + 500.
Bien. Ecrivez un titre sympathique : Salaire avec prime :

Vous vous retrouvez donc avec 2 champs qui font la même chose : Un calcul de 500 francs de plus sur le salaire : une fois dans la requête qui sert de base au formulaire, et une fois dans le formulaire directement :

Et maintenant, est-il possible de refaire un calcul sur un résultat de calcul déjà existant : par exemple, peut-on calculer le résultat du salaire avec la prime, MOINS les charges sociales (5.05% en Suisse)
Mais bien sûr. Nous allons essayer de faire ce calcul-sur-calcul depuis le champ calculé de la requête (le premier), et dans le champ calculé du formulaire (le deuxième). Pour ce faire, vous allez placer 2 zones Ab| à côté des champs, comme ceci :
Nous allons commencer par le premier champ : Il suffit d'écrire =SalaireAvecPrime*0.0505 :


Passons maintenant au 2ème cas de figure : Le cas ou on se base sur un calcul effectué dans le formulaire :


Changez son nom : Cliquez sur l'onglet "Toutes", et demandez la propriété nom : EDISalaireAvecPrime :

Pourquoi EDI ?
EDI comme EDItion (zone d'EDItion). C'est pour me rappeler qu'il s'agit bien d'une zone Ab|, également appelée zone d'édition. (Pour l'instant, ce n'est pas très important, mais plus tard, lorsque nous devrons nommer un grand nombre d'objets de différentes natures, ce sera bien utile).Dans la zone résultante



Peut-on en une seule fois aligner les nombres à droite, et leur donner le format standard, sans avoir besoin de chaque fois les sélectionner ?
Nous avons déjà vu ça : Vous sélectionnez les 4 champs en mode création, et vous cliquez avec le bouton droit de la souris sur l'un des 4, et demandez les propriétés : Vous voyez qu'il indique"Sélection multiple"

Formulaires : calcul basé sur un champ déjà calculé
Pourrais-je avoir ENCORE un champ supplémentaire à droite pour calculer le salaire AVEC la prime MOINS les charges sociales ?
Oui ! Vous allez faire ça en guise d'exercice. Voici le résultat à d'obtenir (exemple de Napoléon Bonaparte):
Si vous êtes vraiment perdu et que vous n'y arrivez pas, vous avez toujours la possibilité de télécharger la base de données telle qu'elle sera à la fin de cette leçon.
C'est bon, j'y suis arrivé. C'est vraiment logique quand on y pense...
Maintenant, constatez que les champs "Montant des charges" et "Salaire net" sont des champs qui ont l'apparence de champs normaux. On pourrait croire qu'on peut écrire quelque chose dedans..Mais non, puisque ce sont des calculs !
Oui, maintenant c'est évident pour vous. Mais si vous développez un formulaire destiné à être utilisé par d'autres personnes, ou simplement vous-mêmes dans quelques mois, vous risquez d'entretenir une certaine confusion : "Mais pourquoi ne peut-on rien écrire dans ces champs ???". Aussi, je vous propose de modifier l'apparence de ces champs afin qu'on aie pas "envie" de cliquer dedans pour changer des données.
Formulaires : aspect esthétique conseillé des champs calculés
Sélectionnez le champ "salaire net" (pas l'étiquette, le champ). Et :- Choisissez Gras (Icône D)
- Aligné à droite (Icône I)
- Fond : "Transparent" (Icône J)
- Ecriture : Bleu (Icône K)
- Bordure : "Transparent" (Icône L)

On fait la même chose pour le montant des charges ?
Oui. recopiez simplement le format du salaire net :- Cliquez sur le champ "Salaire net"
- Cliquez sur le petit pinceau :
(Reproduire la mise en forme)
- Cliquez sur le champ "Montant des charges"

On aurait pu aussi les sélectionner tous les deux pour leur appliquer la même mise en forme ...
Oui. C'est une autre manière de faire.Formulaires : Les propriétés de champs Activé et Verrouillé
Je constate qu'en mode saisie de données, bien qu'on en ait pas "envie", il est malgré tout possible de cliquer dans ces deux champs. On ne peut pas empêcher ça ?
Si. Il faut les "désactiver". Demandez les propriétés de ces deux champs Montant des charges et Salaire Net :

Quelle est la différence entre activé et verrouillé ?
"Activé", c'est le fait de ne pas pouvoir cliquer dans un champ (impossible d'y faire clignoter le curseur). Verrouillé, c'est quand on peut cliquer dans le champ, mais qu'on ne peut pas changerles données.Dans notre exemple, on ne pouvait pas changer les données de toute façon, mais si vous aviez défini Verrouillé = Oui pour le champ prénom par exemple, alors, vous auriez pu cliquer dedans, mais vous n'auriez plus pu changer le contenu...
Tableau récapitulatif :
Activé | Verrouillé | Résultat |
Oui | Non | C'est la valeur par défaut de tous les champs... On peut cliquer dedans, et on peut modifier comme on veut (Pour autant qu'il ne s'agisse pas d'un champ calculé, bien entendu) |
Oui | Oui | On peut cliquer dans le champ, mais on ne peut pas changer sa valeur |
Non | Non | On peut changer les données (pas verrouillé), mais comme on ne peut pas cliquer dans le champ (pas activé), on est bien avancé ! En fait, dans ce cas de figure, le champapparaît en grisé, comme quand vous êtes dans une boîte de dialogue et que certaines options sont en grisé : on ne peut pas les sélectionner parce que c'est impossible pour le moment (Comme quand vous ne sélectionnez rien du tout et que vous essayez de faire "Edition/Copier", c'est impossible, parce qu'il n'y a rien à copier) |
Non | Oui | La totale : On ne peut pas cliquer dans le champ ET de toute façon on ne peut rien y changer... C'est comme l'exemple d'avant (Activé Non, verrouillé Non), mais dans ce cas, le champ reprend son apparence normale, sans devenir grisé. C'est la solution pour laquelle nous avons opté dans notre formulaire. |



Formulaires : différences fondamentales entre l'étiquette Aa et le champ Ab|
Pour revenir aux calculs, l'icôneAa, c'est pour créer une étiquette simple, sans calcul, tandis que Ab|, c'est pour créer un champ calculé ?
Oui. Il ne faut pas se tromper : faions un petit test pour illustrer cette difflérence : insérons la date du jour dans notre formulaire. Placez une étiquette Aa en dessous des champs, et écrivez-y=date() :

La fonction Date()
Il n'a rien compris ! Il ne met pas la date du tout !
Parce que c'est une étiquette ! Mais maintenant, placez un champ Ab|, et écrivez à la place de indépendant : =date():

Et ça marche ! Quant au "Texte13", on peut l'effacer !
Oui. Et ensuite, le champ qui contient la date, vous pouvez à titre d'exercice :- lui changer le format (Demandez ses propriétés, et sur l'onglet Date, demandez Format : Date, complet) histoire d'avoir aussi le nom du jour
- Le demander comme Activé : Non, Verrouillé : Oui
- Demander son fond et sa bordure transparente
- Aligné à gauche, mettre en gras
- Demander la police de caractère Comic Sans MS, taille 16, couleur gris foncé
- Agrandir le champ
- Le mettre en haut du formulaire

Le champ Ab| est donc une zone "intelligente", tandis que l'étiquette Aa est une zone "bête qui ne comprend rien"
Fermez ce formulaire, et Enregistrez-le sous F_CelebriteChampCalcule.
Bon... Hem... On peut résumer ?
Il existe 2 manières de faire des calculs : Soit dans les requêtes, soit dans les formulaires (Nous verrons quand il sera temps que nous pourrons en faire également dans les états). Les 2 techniques donnent des résultats équivalents. Il n'est pas possible de modifier manuellement le résultat d'un calcul, mais au contraire, il est possible (recommandé) de carrément empêcher de cliquer dans cette zone (Activé). Nous avons vu également comment installer la date du jour dans notre formulaire. |
Avez-vous bien compris ?
|
Exercice
Lisez bien l'énoncé jusqu'au bout avant de commencer. L'exercice consiste à créer une base de données Examen.MDB, qui va contenir les champs et les données suivants dans une table T_Eleve :
L'exercice consiste à créer un formulaire F_EleveResultat, qui ressemble approximativement à ceci : ![]() Vous constatez donc qu'il y a 2 nouveaux champs calculés : Total et Moyenne. C'est simple : Le total représente simplement le total des notes, et la moyenne est le résultat des 3 notes, divisé par 3, A vous de voir comment mettre ça en oeuvre. Important : Quand vous allez installer vos champs Ab| à côté du 3ème trimestre, vous constaterez qu'une étiquette vient avec. Vous n'allez pas pouvoir facilement faire glisser l'étiquette dans l'en-tête du formulaire pour ensuite lui changer son nom (L'appeler "Total", et l'autre : "Moyenne"). Je vous conseille d'effacer l'étiquette créée, et de recréer une étiquette Aa de toute pièce dans l'en-tête du formulaire. Si vous n'avez pas bien compris ce que je veux dire, commencez l'exercice, vous tomberez sur le problème vous-même. N'oubliez pas de les définir ensuite en Activé : Non et Verrouillé : Oui Téléchargez la solution de l'exercice ici |
0 commentaires:
Enregistrer un commentaire