Calculs au sein d'une table | Mise à jour ? | Relations ?

Fermé
axedeskso Messages postés 5 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 17 juin 2013 - 3 juin 2013 à 14:26
axedeskso Messages postés 5 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 17 juin 2013 - 17 juin 2013 à 10:04
Bonjour,

Je suis en train de modifier un modèle de calcul. Je travaille avec Access 2010.
Je vous présente mon probleme:
J'ai une table T1 dans laquel il y a une CP appelée Num_T1, ainsi qu'un nom, une quantité.
J'ai une table T2 dans laquel il y a une CP appelée Num_T2 ainsi qu'un nom, une quantité et une CE appelée Num_T1 qui est en relation avec T2.
Les objets de T2 sont des "sous-parties" de T1.
Les quantités de T1 pourront être modifiée lors de l'utilisation de formulaire.
Les quantité de T2 sont soit fixes, soit calculées (dans le modèle sous Access).

J'aimerai savoir comment inculquer à Access les opérations à faire pour les quantités de T2 en relation avec les quantités de T1.

Pour vous donner un exemple, [T1 : 1; livre ; 2] [T2 : 15; page ; (32*[QT.T1]); 1].

Que dois-je faire ?
Merci d'avance.


4 réponses

axedeskso Messages postés 5 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 17 juin 2013
3 juin 2013 à 15:03
Alors j'ai peut être trouver une solution mais celle-ci n'est pas automatique...

Avec une Requete Mise à Jour :

Champs.|............QT...............|.Num_T1
Table.....|.............T2...............|.....T1....
MAJ........|.32*[T1]![Num_T1]..|............
Critere...|................................|.. 1.......

Maintenant, mon problème est l'automatisation de cette requete.

Des lors, que faire ?
0
blux Messages postés 24874 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 mars 2023 3 309
3 juin 2013 à 17:48
Salut,

j'ai rien compris du tout...
0
Bonjour, Je reprends ton 2ème message.
Te rends-tu seulement compte de ce que tu écris?
En langage clair ça donne:
Mettre à jour les données [QT]de la table [T2] avec la valeur du produit "32*[T1]![Num_T1]" pour "[T1]![Num_T1] =1" (le critère que tu entres), soit "32*1"
En d'autres termes, ta requête MiseAJour ne fait que remplacer les valeurs [QT] par 32

Dans le 1er message tu écris: "Les quantités de T1 pourront être modifiée lors de l'utilisation de formulaire."
Si c'est la forme de l'écriture dont tu as besoin, elle sera du genre:"[Forms]![NomDuFormulaire]![NomDuControle]" que tu peux utiliser comme tu veux en tant que paramètre comme critère de sélection, comme valeur pour ta miseAJour, ou bien comme membre de n'importe quelle opération.

Après tu dis: " Les quantité de T2 sont soit fixes, soit calculées (dans le modèle sous Access). " De quels calculs s'agit-il? Comment sélectionneras-tu les valeurs à retenir? Fixées par le formulaire ou calculées? Voir au dessus.

Et Enfin : " J'aimerai savoir comment inculquer à Access les opérations à faire pour les quantités de T2 en relation avec les quantités de T1. " . C'est quoi "inculquer" ? Et les "opérations à faire", quelles sont-elles?
Difficile de t'aider là.
0
axedeskso Messages postés 5 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 17 juin 2013
4 juin 2013 à 11:16
Bonjour,

Désole pour la faute d'inattention...

Pour les tables, c'est comme ci j'avais une table parent et une table enfant.
T1 est principale et T2 est secondaire.

Un exemple simple (j'espère) :
- J'ai un parent appelé Albert qui a 50 poils (nombre fixe mais modifiable lors de l'utilisation de formulaire)
--- J'ai un enfant d'Albert appelé Norbert qui a 20 poils (fixe toujours)
--- J'ai un enfant d'Albert appelé Fukushima qui a 20*le nombre de poil de son père
--- Et j'ai un enfant d'Albert appelé Erwan qui a 30 poils (fixe)
----- J'aimerai (par exemple, calculer le nombre total de poil dans chaque famille, sachant que j'ai 6000 familles a répertorier sachant que je peux selectionné les membres de la famille avec une case à cocher...

L'exemple est-il compréhensible ?
0
blux Messages postés 24874 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 mars 2023 3 309
4 juin 2013 à 11:25
Oui, ça va beaucoup mieux...
On peut calculer facilement le nombre de poils de la famille d'Albert.
A une exception près, qui est celle de Fukushima, puisqu'on ne sait pas mixer dans une seule colonne une formule avec un nombre.
Il faut donc voir le problème autrement : créer une colonne 'calcul' et bâtir une requête en conséquence. Simplement, il faut savoir sous quelle forme se présente le calcul. Si c'est toujours une multiplication, on peut se servir du multiplicateur que l'on laisse dans la colonne 'normale' de quantité avec une référence à une nouvelle colonne 'calcul' qui nous dit qu'on doit le multiplier.
Mais c'est faisable, on utilisera la fonction IIF() dans la requête.
0
Bonjour,
Puisque j'ai été un peu sévère envers toi, je me permets d'ajouter à la réponse de Blux que j'approuve:

1) Tu peux ajouter un champ "Multiplicateur" (soit fixe, soit paramétré a, b, c, ...) et alors ton champ calculé, comme tu l'avais indiqué sera de la forme "NbrePoilAlbert * ChpsParamétré" , ce dernier étant ou 10, 20, 30, ..., ou a, b, c, ... La question restant en suspend étant l'écriture de la formule finale. Si l'utilisation d'un "Iif()" parait s'imposer, il faut savoir où le mettre.
Afin d'éviter des formules à rallonge il peut être préférable d'introduire un champ supplémentaire dont la fonction sera la détermination du multiplicateur surtout qu'il s'annonce un peu compliqué puisqu'il faudra discriminer: primo les valeurs fixes et les valeurs paramétrées, et secundo entre les valeurs paramétrées elles-mêmes. Pour cela, tu auras 2 solutions, soit utiliser les boites de dialogues-système qui demanderont les valeurs de a, b, c, ... en lançant la requête, soit utiliser un formulaire propre donnant à chaque paramètre la valeur qu'il doit prendre.
La bête sera alors de la forme:
"Iif([IsNumeric([ChpMultiplicateur]);[ChpMultiplicateur];iif([ChpMultiplicateur]="a";10;ii([ChpMultiplicateur]="b";20;iif([ChpMultiplicateur]="c";30; etc)))
Les valeurs 10, 20, 30, ..., pouvant être remplacées par le nom du (des) contrôle choisi de ton formulaire "[Forms]![NomDuFormulaire]![NomDuControle]"
D'où l'intérêt d'un champ intermédiaire supplémentaire

2) Tu pourras alors compléter ton calcul par la somme des nombres de tous les poils de la fratrie en utilisant la fonction "Somme" en bas de colonne, à la condition de bien choisir tes regroupements.
Mais ATTENTION avec ceux des parents, parce que si chacun a plusieurs enfants, chacun des parents apparaîtra en face de chaque fils, c'est à dire que tu auras autant de doublons .... qu'il faudra diviser par le nombre de fils.
Enfin .. de quoi se faire des cheveux ou de se les arracher.

3) Juste une question de vocabulaire, tu écrivais dans ton titre: "Mise A Jour", en fait il s'agit "juste" d'une requête-calcul, les requêtes MAJ étant faites pour remplacer définitivement une valeur par une autre. Celles-ci ne sont pas réversibles, alors que les autres gardent les tables intactes. Juste une question de vocabulaire.

Bonne suite.
0
axedeskso Messages postés 5 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 17 juin 2013
17 juin 2013 à 10:04
La solution de la Requete-MAJ marche nickel !
Merci pour cette entraide !
0