Access 2010 - Requête multitables
Fermé
Lockayron
Messages postés
1
Date d'inscription
mardi 16 juillet 2013
Statut
Membre
Dernière intervention
16 juillet 2013
-
16 juil. 2013 à 15:40
blux Messages postés 26396 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 octobre 2024 - 24 juil. 2013 à 10:26
blux Messages postés 26396 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 octobre 2024 - 24 juil. 2013 à 10:26
A voir également:
- Access 2010 - Requête multitables
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Telecharger word 2010 - Télécharger - Traitement de texte
- Access appdata - Guide
- Access runtime ✓ - Forum Access
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
3 réponses
blux
Messages postés
26396
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 octobre 2024
3 308
16 juil. 2013 à 16:28
16 juil. 2013 à 16:28
Salut,
une grosse entreprise qui produit des veaux
Faudra me dire quelle est la matière première ;-)
Plus sérieusement, qu'as-tu déjà fait et où coinces-tu ?
une grosse entreprise qui produit des veaux
Faudra me dire quelle est la matière première ;-)
Plus sérieusement, qu'as-tu déjà fait et où coinces-tu ?
Bonjour,
Merci de votre réponse. Je crains que je ne puisse dévoiler le nom de mon entreprise au risque de me faire taper sur les doigts ^^.
Je serais tentée de dire que je coince à peu près partout =). A mon grand désespoir, je suis une quiche en VBA. Ma base de données est pratiquement finie mais je bloque sur ce calcul qui me prend gravement le chou... Je suis bloquée depuis plus de deux semaines là-dessus et je n'aboutis à rien, hormis à m'embrouiller davantage.
Disons tout d'abord que je ne parviens pas à multiplier la bonne concentration avec la bonne somme des refus. Comment parvenir à faire en sorte qu'Access multiplie la concentration X (qui est propre à un groupe et un lot) avec la somme des refus des veaux (qui appartiennent à ce groupe et ce lot précisément)... ?? Il faut faire concorder le NumSemaine de la table Concentration avec le NumSemaine de la table RefusLait. J'y parviens... mais en créant 40000 requêtes de tri, puis de calcul. Et Access ne supporte pas le croisement de toutes ces requêtes dans mes calculs suivants...
Merci beaucoup de votre aide en tout cas !!
Merci de votre réponse. Je crains que je ne puisse dévoiler le nom de mon entreprise au risque de me faire taper sur les doigts ^^.
Je serais tentée de dire que je coince à peu près partout =). A mon grand désespoir, je suis une quiche en VBA. Ma base de données est pratiquement finie mais je bloque sur ce calcul qui me prend gravement le chou... Je suis bloquée depuis plus de deux semaines là-dessus et je n'aboutis à rien, hormis à m'embrouiller davantage.
Disons tout d'abord que je ne parviens pas à multiplier la bonne concentration avec la bonne somme des refus. Comment parvenir à faire en sorte qu'Access multiplie la concentration X (qui est propre à un groupe et un lot) avec la somme des refus des veaux (qui appartiennent à ce groupe et ce lot précisément)... ?? Il faut faire concorder le NumSemaine de la table Concentration avec le NumSemaine de la table RefusLait. J'y parviens... mais en créant 40000 requêtes de tri, puis de calcul. Et Access ne supporte pas le croisement de toutes ces requêtes dans mes calculs suivants...
Merci beaucoup de votre aide en tout cas !!
blux
Messages postés
26396
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 octobre 2024
3 308
16 juil. 2013 à 16:55
16 juil. 2013 à 16:55
Tu fais ça en VBA ou pas ?
Tu peux coller ton code ?
Connais-tu les fonctions de domaine (dlookup, dsum, dmax...) ? Il est possible qu'elles puissent t'aider dans ce cas.
Tu peux coller ton code ?
Connais-tu les fonctions de domaine (dlookup, dsum, dmax...) ? Il est possible qu'elles puissent t'aider dans ce cas.
J'ai essayé de tout faire pour ne pas passer par VBA car je suis incapable d'aligner 10 lignes de codes sans déclencher une catastrophe sur Access...
J'avais pensé utiliser les fonctions recordset et dlookup mais... vu mes plates connaissances, je n'arrive à rien. Je m'arrête à trois lignes de code, ne sachant pas formuler ce que je souhaite demander à Access...
J'avais pensé utiliser les fonctions recordset et dlookup mais... vu mes plates connaissances, je n'arrive à rien. Je m'arrête à trois lignes de code, ne sachant pas formuler ce que je souhaite demander à Access...
blux
Messages postés
26396
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 octobre 2024
3 308
Modifié par blux le 16/07/2013 à 17:26
Modifié par blux le 16/07/2013 à 17:26
On ne déclenche pas plus de catastrophes en VBA qu'avec une requête DELETE ou UPDATE mal écrite !
Si tu poses correctement ton problème, il n'y a pas de raison que tu n'y arrives pas.
Commence par décomposer (en langage 'naturel', mais un peu technique) les opérations nécessaires pour arriver à tes fins et expose-les ci-après. On verra comment les coder pour les résoudre.
Si tu poses correctement ton problème, il n'y a pas de raison que tu n'y arrives pas.
Commence par décomposer (en langage 'naturel', mais un peu technique) les opérations nécessaires pour arriver à tes fins et expose-les ci-après. On verra comment les coder pour les résoudre.
Re-Bonjour !
Je pense que le code devrait se présenter de la manière suivante... Est-ce cela que vous attendiez ?
Je précise que i et j (dans la boucle "jusqu'à") sont déterminés par une requête. Celle-ci calcule en fait la semaine de début et la semaine de fin des périodes à partir de la table DateAnalyses. Je ne voyais vraiment pas comment l'intégrer à ce code... Même s'il y a sûrement un moyen...
Merci beaucoup pour votre aide ;)
Je pense que le code devrait se présenter de la manière suivante... Est-ce cela que vous attendiez ?
Déclaration du lot Déclaration de la période Pour chaque veau appartenant au lot X Cas 1 : la période est D0-D1 Si le veau appartient au groupe 1 Jusqu'à ce que i = j - Sommes des Refus_1M à Refus_7S de la semaine i - Multiplier ces sommes par la concentration de la semaine i, du lot X, du groupe 1 - Ajouter ces sommes Fin jusqu'à Soustraire ces sommes de la quantité distribuée au lot X, au groupe 1, à la période D0-D1 Sinon (le veau appartient au groupe 2) Jusqu'à ce que i = j - Sommes des Refus_1M à Refus_7S de la semaine i - Multiplier ces sommes par la concentration de la semaine i, du lot X, du groupe 2 - Ajouter ces sommes Fin jusqu'à Soustraire ces sommes de la quantité distribuée au lot X, au groupe 2, à la période D0-D1 Fin Si Cas 2 : la période est D1-D2 ... Cas 3 : la période est D2-D3 ... Cas 4 : la période est D3-D4 ... Cas 5 : la période est D4-D5 ... Cas 6 : la période est D5-D6 ... Afficher les résultats obtenus pour l'ensemble des veaux du lot X (groupe 1 et 2) sur la période Fin Pour
Je précise que i et j (dans la boucle "jusqu'à") sont déterminés par une requête. Celle-ci calcule en fait la semaine de début et la semaine de fin des périodes à partir de la table DateAnalyses. Je ne voyais vraiment pas comment l'intégrer à ce code... Même s'il y a sûrement un moyen...
Merci beaucoup pour votre aide ;)
blux
Messages postés
26396
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 octobre 2024
3 308
17 juil. 2013 à 10:06
17 juil. 2013 à 10:06
C'est déjà plus clair, ça doit pouvoir se faire en VBA sans trop de problèmes.
Peux-tu donner les relations entre les tables ?
Peux-tu donner les relations entre les tables ?
La table Veau est reliée : table Groupe, table Lot, table RefusLait
La table Lot est reliée : table Veau, table DateAnalyses, table AlimentationLait, table Concentration
La table Groupe est reliée : table Veau, table AlimentationLait, table Concentration
Je pense qu'avec cela, vous avez toutes les relations entre mes 7 tables.
La table Lot est reliée : table Veau, table DateAnalyses, table AlimentationLait, table Concentration
La table Groupe est reliée : table Veau, table AlimentationLait, table Concentration
Je pense qu'avec cela, vous avez toutes les relations entre mes 7 tables.
blux
Messages postés
26396
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 octobre 2024
3 308
Modifié par blux le 17/07/2013 à 12:53
Modifié par blux le 17/07/2013 à 12:53
La première chose à faire est de créer la requête qui servira de base à la boucle principale, elle doit comporter tous les éléments (ou le plus grand nombre possible) qu'on aura à tester dans la boucle.
Cette requête sera la base d'un recordset que l'on va parcourir en VBA.
Pour chaque ligne, on fera ensuite le traitement approprié.
Tu en profiteras pour expliciter 'j' (qui est la cible de 'i' dans une boucle).
Cette requête sera la base d'un recordset que l'on va parcourir en VBA.
Pour chaque ligne, on fera ensuite le traitement approprié.
Tu en profiteras pour expliciter 'j' (qui est la cible de 'i' dans une boucle).
J'ai créé une requête (nommée "R22 Transformation dates"), basée sur l'unique table DateAnalyses qui permet de déterminer les semaines à sélectionner pour les différentes périodes.
Elle comporte des calculs réalisés à partir de ces dates nommés D12, D23, D34, D45 et D56.
D12 = (D2-D1)/7
D23 = (D3-D1)/7
D34 = (D4-D1)/7
...
Ainsi, par exemple, pour le lot X, cette requête détermine que :
- la période "D1-D2" débute à la semaine 1 et se termine à la 6 (résultat de D12)
- la période "D2-D3" débute à la semaine 7 (résultat de D12+1) et se termine à la 14 (résultat de D23)
- la période "D3-D4" début à la semaine 15 (résultat de D23+1) et se termine à la semaine 18 (résultat de D34)
-...
C'est ce que j'entendais par "i" et "j".
Dans la requête qui servira à la boucle principale (qui est, j'imagine, le "pour"), je dois mettre pêle-mêle toutes les informations... ?
Elle comporte des calculs réalisés à partir de ces dates nommés D12, D23, D34, D45 et D56.
D12 = (D2-D1)/7
D23 = (D3-D1)/7
D34 = (D4-D1)/7
...
Ainsi, par exemple, pour le lot X, cette requête détermine que :
- la période "D1-D2" débute à la semaine 1 et se termine à la 6 (résultat de D12)
- la période "D2-D3" débute à la semaine 7 (résultat de D12+1) et se termine à la 14 (résultat de D23)
- la période "D3-D4" début à la semaine 15 (résultat de D23+1) et se termine à la semaine 18 (résultat de D34)
-...
C'est ce que j'entendais par "i" et "j".
Dans la requête qui servira à la boucle principale (qui est, j'imagine, le "pour"), je dois mettre pêle-mêle toutes les informations... ?
blux
Messages postés
26396
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
25 octobre 2024
3 308
18 juil. 2013 à 10:11
18 juil. 2013 à 10:11
Tu peux mettre le plus d'informations possibles concernant l'objet principal, c'est-à-dire le veau, ça évitera de les chercher par la suite...