Insérer champ calculé dans un sous-formulaire (Access 2010)
Résolu/Fermé
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
Modifié par ButteDuLac le 23/07/2015 à 18:56
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 13 août 2015 à 01:56
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 13 août 2015 à 01:56
A voir également:
- Insérer champ calculé dans un sous-formulaire (Access 2010)
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer un filigrane word - Guide
- Formulaire de réclamation facebook - Guide
2 réponses
Bonjour,
Plusieurs choses!
1) J'ai essayé de créer un sous-sous-formulaire, mais Access ne semble pas le supporter (plante chaque fois)
Les anciennes version de Access descendaient jusqu'à 15 (quinze) niveaux de s/s formulaires. A titre perso je suis allé jusqu'à 4. Assez difficile à articuler; alors 15 !!!! Donc ton problème ne vient pas de Access, mais plutôt du manque de maîtrise.
2) Les formulaires, s/s formulaires, états, etc , ne sont que des présentations des tables et des requêtes. Donc, il est nécessaire de faire tous ses calculs et recherches de données avec des requêtes, et seulement quand tout va bien les mettre en formulaire et états.
3) Pour ton problème, si je comprends bien, il te faut 2 niveaux de requêtes, un niveau "Mère" et un niveau "Accouchement" puisque les mères accouchent (peuvent) plusieurs fois et chaque fois à des âges différents.
Le mieux, il me semble, est de prévoir dans la 2ème requête, un champ "DDNMere" pour avoir un champ calculé "AgeMere = Annee(DAccoucht - DDNMere)"
Attention: Prévoir un champ "IdMere" dans la 2ème requête, pour faire la liaison avec l'"IdMere" de la table "TMere"
4) Pour la table "TBb", tu peux prévoir éventuellement, 2 champs de liaisons, "IdMere" et "IdAccoucht", pour rattacher les bébés à leur mère et à leur accouchement, mais ce n'est pas obligé parce chacun est déjà relié à un accouchement et chaque accouchement est relié à une mère. Le reste n'est qu'un peu de savoir-faire.
Avant de te lancer dans les formulaires et s/s formulaires, valide tes requêtes, il sera bien temps de t'occuper des façades quand la structure sera au point.
Bonne suite
Plusieurs choses!
1) J'ai essayé de créer un sous-sous-formulaire, mais Access ne semble pas le supporter (plante chaque fois)
Les anciennes version de Access descendaient jusqu'à 15 (quinze) niveaux de s/s formulaires. A titre perso je suis allé jusqu'à 4. Assez difficile à articuler; alors 15 !!!! Donc ton problème ne vient pas de Access, mais plutôt du manque de maîtrise.
2) Les formulaires, s/s formulaires, états, etc , ne sont que des présentations des tables et des requêtes. Donc, il est nécessaire de faire tous ses calculs et recherches de données avec des requêtes, et seulement quand tout va bien les mettre en formulaire et états.
3) Pour ton problème, si je comprends bien, il te faut 2 niveaux de requêtes, un niveau "Mère" et un niveau "Accouchement" puisque les mères accouchent (peuvent) plusieurs fois et chaque fois à des âges différents.
Le mieux, il me semble, est de prévoir dans la 2ème requête, un champ "DDNMere" pour avoir un champ calculé "AgeMere = Annee(DAccoucht - DDNMere)"
Attention: Prévoir un champ "IdMere" dans la 2ème requête, pour faire la liaison avec l'"IdMere" de la table "TMere"
4) Pour la table "TBb", tu peux prévoir éventuellement, 2 champs de liaisons, "IdMere" et "IdAccoucht", pour rattacher les bébés à leur mère et à leur accouchement, mais ce n'est pas obligé parce chacun est déjà relié à un accouchement et chaque accouchement est relié à une mère. Le reste n'est qu'un peu de savoir-faire.
Avant de te lancer dans les formulaires et s/s formulaires, valide tes requêtes, il sera bien temps de t'occuper des façades quand la structure sera au point.
Bonne suite
Re-... et bonne vacances (ou en espérant que vous avez passé de bonnes vacances).
"je cherche un moyen pour que l'infirmière puisse VOIR s'afficher l'âge de la patiente lors de l'accouchement, lorsqu'elle saisit des données"
Dans ce cas effectivement il faut calculer immédiatement l'âge. La seule chose est que c'est un peu compliqué, parce que si on relance la requête principale pour qu'elle recalcule les nouvelles données, elle réinitialise tout, y compris l'ordre et l'ensemble des données. Aussi la seule manière est de mettre un contrôle calculé dans le formulaire qui s'actualise soit à l'entrée de la donnée soit en forçant par un click.
J'opterais pour un petit bout de code placé dans un module standard, ou un module de classe, pour pouvoir l'appeler à différentes étapes de l'entrée des données.
Function AgeParturiente()
DNMere = Screen.ActiveForm![DateDNMere]
DAcc = Screen.ActiveForm!SsFormAcc.Form![DateAcc]
Age = Year(DAcc - DNMere ) - 1899
Screen.ActiveForm!SsFormAcc.Form![AgePartur]
En plaçant ce petit code sur la propriété AprèsMaj du sous-formulaire "Accouchement", ça devrait marcher. Mais il faut que le contrôle "AgePartur" soit indépendant
Mais le problème est que vous n'aurez que l'âge au moment du dernier accouchement parce que les autres ne pourront pas être calculés; ils ne pourront l'être qu'à partir de la requête source. En fait il y a conflit entre les 2, et je n'y vois pas d'autres solutions que d'avoir 2 contrôles pourle calcul de l'age, un par le biais de la requête et l'autre par le moyen d'un calcul indépendant.
Pour l'état c'est beaucoup plus simple parce qu'il suffit d'utiliser le calcul dans la requête en utilisant la formule que j'ai donnée:
Age = Year(DAcc - DNMere) - 1899
Bonne suite
"je cherche un moyen pour que l'infirmière puisse VOIR s'afficher l'âge de la patiente lors de l'accouchement, lorsqu'elle saisit des données"
Dans ce cas effectivement il faut calculer immédiatement l'âge. La seule chose est que c'est un peu compliqué, parce que si on relance la requête principale pour qu'elle recalcule les nouvelles données, elle réinitialise tout, y compris l'ordre et l'ensemble des données. Aussi la seule manière est de mettre un contrôle calculé dans le formulaire qui s'actualise soit à l'entrée de la donnée soit en forçant par un click.
J'opterais pour un petit bout de code placé dans un module standard, ou un module de classe, pour pouvoir l'appeler à différentes étapes de l'entrée des données.
Function AgeParturiente()
DNMere = Screen.ActiveForm![DateDNMere]
DAcc = Screen.ActiveForm!SsFormAcc.Form![DateAcc]
Age = Year(DAcc - DNMere ) - 1899
Screen.ActiveForm!SsFormAcc.Form![AgePartur]
En plaçant ce petit code sur la propriété AprèsMaj du sous-formulaire "Accouchement", ça devrait marcher. Mais il faut que le contrôle "AgePartur" soit indépendant
Mais le problème est que vous n'aurez que l'âge au moment du dernier accouchement parce que les autres ne pourront pas être calculés; ils ne pourront l'être qu'à partir de la requête source. En fait il y a conflit entre les 2, et je n'y vois pas d'autres solutions que d'avoir 2 contrôles pourle calcul de l'age, un par le biais de la requête et l'autre par le moyen d'un calcul indépendant.
Pour l'état c'est beaucoup plus simple parce qu'il suffit d'utiliser le calcul dans la requête en utilisant la formule que j'ai donnée:
Age = Year(DAcc - DNMere) - 1899
Bonne suite
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
13 août 2015 à 01:56
13 août 2015 à 01:56
Merci! Je vais donc me contenter de ma simple requête, pour le moment. Je verrai pour l'état par la suite (pas rendue là)...
Modifié par ButteDuLac le 24/07/2015 à 23:24
1. J'ai essayé à la maison et j'ai pu créer les trois niveaux de sous-formulaire - avec le même fichier. (Ce n'est donc pas un manque de maîtrise (même si je ne me prétends pas experte!) Le problème est donc au bureau (logiciel instable, mémoire vive insuffisante?), je verrai avec le tech.
2. et 3. J'ai bel et bien effectué le calcul dans une requête et ça fonctionne, mais je cherche un moyen pour que l'infirmière puisse VOIR s'afficher l'âge de la patiente lors de l'accouchement, lorsqu'elle saisit des données. Les infirmières ne manipuleront pas de requêtes, seulement des formulaires.
(Par ailleurs, j'aurai aussi besoin d'afficher cette même donnée calculée dans un état, mais je ne suis pas rendue là...)
4. J'ai déjà une relation mère à accouchement (via n° dossier mère, clé primaire) et une relation accouchement à bébé (via clé n° incrémenté de l'acc.), cette logique, je l'avais déjà.
Je n'ai aucune autre requête à créer, je suis bien à l'étape des formulaires, mes tables sont complétées. Mes formulaires fonctionnent très bien, mais il ne me manque que la donnée calculée Age_mere.
Je ne vois pas de solution dans votre réponse. Merci quand même!
D'ici mon retour, est-ce que quelqu'un a une meilleure idée...???
Pour l'instant... c'est le temps des vacances!!!
24 juil. 2015 à 23:11