Opérations sur champs Requete ACCESS

tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -  
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je bosse sur Access 2007 et j'ai quelques soucis concernant les opérations entre champs d'une
meme requete:

j'aimerais faire la multiplication de 2 champs et mettre le résultat dans 1 3eme champ:

j'ai crée dans ma requete ce 3eme champ (appelé "Cout théorique") et j'ai mis :

Cout théorique:[CompteDeTotal]*[Cout national par GAR] pour avoir le cout en garantie qu"'une
concession aurait du avoir selon son volume de garanties passées. (le premier champs représente le nb de garantie passées par la concessionle tandis que le deuxième représente le prix moyen d'une prise sous garantie)

mais quand je rentre ca, il apparait 2 boites de dialogue successivement:

Entrer une valeur de parmètre:
[CompteDeTotal]
Puis aprés la meme chose avec:
[Cout national par GAR]

je valide les 2 fois sans rien mettre et il m'aparait dans ce nveau champs que des ## mais en cliquant dessus il y a derrière les bons résultats!!

je ne comprends pas ce qui se passe, pourriez vous m'aider svp ?!!!! je suis perdu!!

MERCI par avance..............

97 réponses

cameleon33 Messages postés 635 Statut Membre 50
 
Salut,

Si il t'ouvre des boites de dialogue pour demander les valeurs, c'est qu'il ne reconnait pas les variables [CompteDeTotal] et [Cout national par GAR]..

Tu peux nous donner le code de ta requete SQL stp?
1
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
ok pas de souci avec plaisir!!

la voila:

SELECT [Table de Base].Concession, Sum([Table de Base].Total) AS SommeDeTotal,
DAvg("Total","Table de Base") AS [Cout national par GAR], Count([Table de
Base].Total) AS CompteDeTotal, [CompteDeTotal]*[Cout national par GAR] AS [Cout
théorique]
FROM [Table de Base]
GROUP BY [Table de Base].Concession, DAvg("Total","Table de Base"),
[CompteDeTotal]*[Cout national par GAR];


c'est indigeste et je ne comprends pas tout, alors je compte sur vous pour me dépétrer!!

Merci par avance!!
0
cameleon33 Messages postés 635 Statut Membre 50 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
 
Ok merci, alors encore une tite question. Quelles sont les tables utilisées, et les champs? (avec la bonne synthaxe ^^)

De ce que je vois tu as une table : Table de Base avec les champs : Concession, Total

Et après le reste ne sont que des calculs...

C'est bien cela?
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6 > cameleon33 Messages postés 635 Statut Membre
 
j'ai comme champs:
Concession avec dans "opération" de la grille de la requete: Regroupement
Total avec dans "opération" de la grille de la requete: Somme
Cout national par garantie:MoyDom("Total";"Table de Base") avec dans "opération" de la grille de la requete: Regr..t
Total avec dans "opération" de la grille de la requete: Compte
Cout théorique: [CompteDeTotal]*[Cout national par GAR] avec dans "opération" de la grille de la requete: Regr..t

et c'est ce dernier champs qui m'affiche n'importe quoi...

J'ai plusieurs tables mais en locurrence c'est la table "Table de Base" sur laquelle je m'appuie...et qui est dans "table" de la grille pour les champs:

Concession
Total
Total


Voila j'ai essayé d'etre le plus précis possible !! et aussi d'etre un minimum compréhensible...

Merci pour ta patience!!
0
cameleon33 Messages postés 635 Statut Membre 50
 
Tu as rajouté des options de tri dans le mode création?

Sinon tu peux essayer de créer une nouvelle requête où tu ne mets rien en mode création, tu passes en mode SQL et tu tapes ça :

SELECT [Table de Base].Concession, Sum([Table de Base].Total) AS SommeDeTotal, DAvg("Total","Table de Base") AS Expr1, Count([Table de Base].Total) AS CompteDeTotal, DAvg("Total","Table de Base")*Count([Table de Base].Total) AS Coutthéorique
FROM [Table de Base]
GROUP BY [Table de Base].Concession, DAvg("Total","Table de Base");
1
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
on s'est croisé lol....le SQL que tu m'as donné donne pareil, des "#" mais pas de mess d'erreur..

Pour "tri" en mode création, rien pour aucun champs.....
0
cameleon33 Messages postés 635 Statut Membre 50 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
 
Lool on arrête pas de se croiser... Cf le message 11 plus haut pour les #
0
cameleon33 Messages postés 635 Statut Membre 50
 
Alors j'ai effectué quelques tests avec Access 2007 et il semble qu'il ne reconnaisse pas les [CompteDeTotal] et [Cout nati....] dans ta multiplication. La solution est d'utiliser à la place :

MoyDom("Total";"Table de Base")*Compte([Table de Base].Total)

Donc en gros dans l'assistant de création de requête, tu remplaces le [CompteDeTotal]*[Cout national par GAR] par MoyDom("Total";"Table de Base")*Compte([Table de Base].Total) et dis moi si ça marche.
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
Il apparait un message d'erreur:

Impossible d'avoir une fct d'agrégat dans la clause GROUP BY (DAvg("Total","Table de Base")*Count([Table de Base].[Total]))

Je ne sais pas si ca va t'aider car moi non pas du tout je ne comprends pas ce que ca veut dire!

Merci de prendre le temps de m"aider!!


En enlevant "regroupement" de la grille du champs, je n'ai plus ce mess d"'erreur ni les boites de dialogue qui apparaissent, mais tjs des "#" dans le nveau champs avec la vrais valeur derrière!
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
 
voila le nouveau SQL de la requete:

SELECT [Table de Base].Concession, Sum([Table de Base].Total) AS SommeDeTotal, DAvg("Total","Table de Base") AS [Cout national par GAR], Count([Table de Base].Total) AS CompteDeTotal, DAvg("Total","Table de Base")*Count([Table de Base].[Total]) AS [Cout théorique]
FROM [Table de Base]
GROUP BY [Table de Base].Concession, DAvg("Total","Table de Base");

on sait jamais si ca peut aider!
0
cameleon33 Messages postés 635 Statut Membre 50 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
 
Le SQL a l'air bon, tu dois juste avoir un problème de largeur de colonne lors de l'affichage du résultat de ta requête.
0
cameleon33 Messages postés 635 Statut Membre 50
 
Pour le problème des #, augmente juste manuellement la largeur de la colonne où tu as les #, c'est que tu dois avoir des nombres importants et que ça ne rentre pas.

Après il gardera la taille de colonne, donc tu ne devrais plus avoir de probs.

Sinon effectivement, je n'avais pas mis en Regroupement mais en Expression.

Essaie de nouveau et tiens moi au courant
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
ro la la la quel débile !! en élargissant les colonnes ca marche ! par contre j'ai 10 000 décimales, je peux n'en avoir que 2 ?!

Merci sincérement pour ta précieuse aide!!

Ps: 1°) je vais continuer a bosser sur des requetes avec des calculs similaires, pourrais je continuer a bénéficier de ton aide en postant sur ce topic (car ca sera toujours les memes genres de calcul mais plus compliqué:
j'aimerais calculer l'ecart relatif entre cout reel et cout théorique : (cout réel - cout théorique) / cout réel et je pense que le code a rentrer sera plus compliqué!! puis d'autres genres de calcul...)
2°) On ne sait jamais qui ne tente rien a rien: ca fait 10 jours que je cherche comment faire que pour un graph de type camembert, il soit possible de faire en sorte que les étiquettes (c'est à dire les noms des différents secteurs du graph) soient concentriques, de facon a ce qu'il n'y est pas de chevauchement des étiquettes......

Mille merci par avance!
0
cameleon33 Messages postés 635 Statut Membre 50 > tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention  
 
Y a pas de problème. Tu peux toujours poster sur ce sujet si tu as besoin de mon aide. Cependant, je ne suis pas un pro d'Access... J'en ai fait un peu lors d'un projet dans mon école d'ingénieur, mais mes connaissances sont très limitées.

Cependant pour les décimales, tu peux utiliser la fonction round.

Exemple pour le cout théorique arrondi à 2 chiffres après la virgule, tu remplaces :

MoyDom("Total";"Table de Base")*Compte([Table de Base].Total)

Par :

round(MoyDom("Total";"Table de Base")*Compte([Table de Base].Total);2)

Sinon pour les autres opérations, ça sera peut-être un peu plus compliqué mais pas sûr.

Et pour les camemberts, je ne sais même pas comment on crée le graphique :p
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6 > cameleon33 Messages postés 635 Statut Membre
 
Merci beaucoup pour ces infos super précieuses!

C'est marrant parce que........je suis actuellement en école d'ingé lol!

je suis en stage chez Mitsubishi Motors France, et je dois développer une application sous Access 2007 (que je ne connaissais pas du tout avant d'être ici) alors je galère un peu; j'ai 4 mois pour le faire, et la ca fait 1 mois que je suis dessus....
D'aprés ce que je vois si toi tu gères pas alors moi qu'est ce que c'est ;-) !!


Pour le graph je gère mais un peu lol c'est vrai qu'Acces n'est pas terrible pour ca!!


Je te tiens au courant de mon évolution des que je peux!

merci en tout cas!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
Alors j'essai de faire:

( Cout Réel - Cout théorique ) / Cout réel

avec Cout Réel: Total
Cout théorique : Round(MoyDom("Total";"Table de Base")*Compte([Table de Base].[Total]);2)

j'ai donc écrit

([Total] - MoyDom("Total";"Table de Base")*Compte([Table de Base].[Total])) / [Total]
mais ca ne marche pas !

une idée peut etre camarade ingé ;-) ?!
0
cameleon33 Messages postés 635 Statut Membre 50
 
Alors voilà ce que j'ai fait pour que ça marche.

J'ai créé un champ Cout Réel: Total avec en dessous Table de base et Regroupement.
Ensuite un autre champ test: ([Cout Réel]-[Cout Théorique])/[Cout Réel] en mode Expression

Je sais pas pourquoi ça marche pas en mettant ta formule, j'ai essayé mais non... Dis moi ce que ça donne.

Si tu veux pas afficher le champ Cout Réel, tu peux décocher la case afficher ^^

Bon je vais bientot débaucher, donc je pourrais plus aider pour aujourd'hui...@2m1 collègue (t'es dans quelle école d'ailleurs?)
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
ecoute je vais pas te retarder plus que ca, un grand merci de toute facon pour ton aide!

je vais tester tout ca tout a l'heure et te tiendrais au courant...

Pour moin, c'est l'Ecole des Mines à Alès....et toi t'es (ou t'étais) où ?!

Merci et a demain coupaing !!
0
cameleon33 Messages postés 635 Statut Membre 50
 
Ok tiens moi au courant,

Je suis aux Arts en métiers de Paris, actuellement en stage dans les landes, dans une papeterie...

++
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
ok ok en PFE je suppose...moi c'est en stage "ingénieur adjoint"...

Bon courage et a plus tard, bonne fin de journée!
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
Salut!
je viens aux nouvelles!
Alors j'ai rentré

Cout réel:Total
([Cout Réel]-[Cout Théorique])/[Cout Réel] comme nouveaux champs
avec respectivement "regroupement" et "expression" en dessous mais il apparait tjs la boite de dialogue me disant
'entrer une valeur de paramètre' Cout réel...
et il n'apparait rien dans la colonne du champs ([Cout Réel]-[Cout Théorique])/[Cout Réel]

j'ai compris que c'est parce qu"il ne reconnaissait pas ma variable Cout réel mais je ne sais pas comment la déclarer pour qu'il l'accepte....

J'attends de tes news!
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
attends c'est fou...en affichant Cout réel:Total ca marche nikel...

et en le cachant ca déconne ca m'affiche la boite de dialogue!

va comprendre!!
0
cameleon33 Messages postés 635 Statut Membre 50
 
Là je vois pas pourquoi il fait ça, c'est bizarre... J'ai un peu de boulot là, donc je regarderais ça un peu plus tard
0
cameleon33 Messages postés 635 Statut Membre 50
 
Ok, bon alors, je suis passé en mode SQL parceque je n'aime pas du tout l'assistant. Apparemment le message d'erreur Agrégat machin, vient d'un problème avec GROUP BY. Visiblement si il te dit "Concession" ne fait pas partie de la fonction d'agrégat, tu rajoutes manuellement Table.Concession dans la clause GROUP BY et ça lui va.

Donc j'ai tout refait directement en SQL et ça donne :

SELECT Table1.Concession, Sum(Table1.Total) AS SommeDeTotal, DAvg("Total","Table1") AS CoutNat, Count(Table1.Total) AS CompteDeTotal, round(DAvg("Total","Table1")*Count(Table1.Total),5) AS Coutthéorique, round((Total-Coutthéorique)/Total,5) AS Test1
FROM Table1
GROUP BY Table1.Concession, Table1.Total;

Remplace tous les Table1 par [Table de Base] (j'ai changé le nom pour gagner du temps à taper...)

Le mieux pour rentrer ça c'est de faire une nouvelle requête et de ne pas toucher à l'assistant. Dis moi si ça marche mieux.
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
ouai ben écoute ca marche nikel t'es un big boss ! MERCI vraiment...

tu préfères passer par le SQL que par l'assistant ??!!!! ouaou....parce que moi j'ai beaucoup de mal avec le SQL...comment as tu fais a t'y mettre ? autodidact ou tu avais déjà des bases? car moi je pars vraiment de trés trés loin lol et quand tu débutes c'est carrément pas simple Access... mais petit a petit ca s'arrange, notamment grace a des gens comme toi ou a des forums comme CCM...

Je te tiens au courant de l'avancée de mon taf....
2 petits trucs juste:
-saurais tu s'il est possible de faire des liens fréquents entre Access et Excel afin de créer des graphs sous excel ayant pour source mes requetes sous Access...et aprés les importer sous access ?! mais de facon automatique car tout mon travail est fréquemment mise a jour avec de nouvelles tables de base liées a mon application...
-est il possible de t envoyer mon application pour avoir ton avis, en sachant que 2 de mes 3 tables a partir desquelles tout part sont liées directement a des emplacements sur réseau informatique local?!

Merci en tout cas pour tout, vraiment!!
0
cameleon33 Messages postés 635 Statut Membre 50
 
Pour Access, j'ai eu 4h30 de cours cette année à l'école et un projet de 4h30... Après pour ce projet, j'ai beaucoup appris en SQL ... mais surtout tout seul ^^
Le SQL n'est pas très compliqué à comprendre.
C'est presque du Français quand tu décortiques.. La synthaxe est parfois un peu déroutante :p

Sinon pour tes questions :

- Pour Excel, tu as moyen d'importer des données à partir d'une base de données ACCESS... Sous Excel 2007, tu vas dans l'onglet Données et tu as alors une option Données externes. Tu devrais y trouver ton bonheur. tu importes toute ta table sur une page sur laquelle tu t'appuies pour tes graphiques. Tu as ensuite un bouton "Actualiser", pour mettre à jour les données.

- Je sais pas si c'est possible de m'envoyer tes fichiers, je sais pas si ça va marcher si il n'a pas les liens. Il gardera ptet des valeurs quand même... Tu peux toujours essayer. (Après fais attention, tu n'as ptet pas le droit de diffuser les données venant de l'entreprise dans laquelle tu bosses ^^)

C'est avec plaisir que je t'aide si je peux :p (faut dire que je m'ennuie un peu pour mon stage, j'ai fini et mon tuteur est en vacance, donc je m'occupe comme je peux ^^)
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
ok lol pour ton stage tant mieux tu me diras un peu de repos c'est pas si mal ! moi j'ai fini les cours le 2 mai et j'étais en stage le 06 mai...jusqu'au 29 aout, avec la reprise le 2 septembre..alors pas de vacances....

Je viens de poster un nveau topic sur l'histoire des graphs, histoire de voir un peu ce que ca peut donner!

Pour le SQL c'est vrai que ce n'est pas insurmontable mais beucoup de micro détails de syntaxe viennent trop souvent entacher la progression quand tu connais pas bien, et ca ralentit un max!!

Pour les données pas de souci de confidentialité je me suis déjà renseigné, mais c'est vrai que j'avais déjà essayer et sans les tables liées ca va déconner a plein pot..alors tant pis!

Sinon c'est pas indiscret c'est quoi le sujet de ton stage? et c'est quoi ta spécialité ?!

A tte a leur! et bon ap' surement ;-)
0
cameleon33 Messages postés 635 Statut Membre 50
 
Mon stage, j'en ai encore jusqu'au 16 septembre. Jsuis au tiers quoi...

J'ai vu ton deuxième post, je n'y réponds pas pour laisser d'autres le voir ^^ (ça servirait à rien que j'y répondes :p)
Je pense qu'en important les données, tu dois pouvoir arriver à faire tes graphs facilement

Pour mon stage :

En gros, ils fabriquent le papier en gros enrouleurs d'une dizaine de tonnes et de 5m de large et ils doivent recouper cela en plus petites bobines. Ils utilisent une bobineuse pour ça. Mais ils ne savent pas combien de temps le bobinage prend en général, ce qui fait que la production est pas vraiment harmonisée, et les opérateurs se plaignent, donc mon travail c'est de faire un modèle mathématique qui en fonction d'un ordre de fabrication, donne le temps de bobinage... Le plus dur, c'est les relations avec les opérateurs, comme j'ai besoin de leur aide et de chronométrer des trucs... faut un peu de diplomatie ! lool... mais bon ça se passe bien, ils sont sympas, et puis c'est formateur (surtout avec le tuteur qui veut que je sois autonome et que j'ai vu une fois depuis le début du stage :p)

Sinon j'ai pas encore de spécialité, l'année prochaine, je me spécialise en aérodynamique et aéroacoustique (rien à voir avec mon stage, mais je voulais découvrir les industries, les vrais... pas juste des chaines de montage :p)

@tte
Bon app' à toi aussi! ;-)
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
aaa j'ai bien magné j'espère que toi aussi!
Sympa ton sujet de stage, ca doit pas etre si simple de mettre en place cette modélisation mathématique...

par contre si t'as déjà fini, vu le temps qu'il te reste tu vas pouvoir l'affiner lol !!

Moi je continues dans mon merdier, meme si ca avance pas mal..

Je te tiens au courant, meric en tout cas!
0
cameleon33 Messages postés 635 Statut Membre 50
 
Oui c'est intéressant comme stage, la modélisation j'ai jusqu'au 30 juillet pour la paufiner... ça c'est fait... là je la vérifie... mais après il faudra en faire une pour chaque machine à papier et éventuellement intégrer tout ça à leur système informatique. Mais je peux rien faire tant que mon tuteur n'est pas là...

Sinon moi aussi j'ai bien mangé... je ferais bien une tite sieste là... tiens moi au courant :p jsuis dans le coin jusqu'à 17h (la bobineuse est en panne :p)
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
ok pas de sushi lol!
0
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
 
salut a tous (et surtout a Cameleon ;-) ) me revoila!

alors aprés un bon week end je me suis replongé dans mon travail et j'ai une nouvelle interrogation:
j'ai dans 2 champs dont :

Coût théorique en garantie
et
Coût réel passé en garantie

j'aimerais dans un 3eme champs ne pas mettre comme actuellement "Ratio" qui aujour'hui me donne par exemple:
avec Coût théorique en garantie=1294,32 €
et Coût réel passé en garantie=1747,08 €
on trouve ratio= 134,98 %

j'aimerais mettre dans ce champs non plu "ratio" mais "Ecart" avec comme résultat : +- ...% (dans l'exemple on aurait donc "ecart" = + 34.98 %)

Voila je ne sais pas comment faire pour avoir un écart en % plutot que des resultats sous la forme 1.. %

Merci par avance pour votre aide!!
0
cameleon33 Messages postés 635 Statut Membre 50
 
Salut!! Alors passé un bon WE?

Sinon pour ton problème, utilise la formule : (Cout Réel - Cout théorique)/Cout théorique

C'est bien ça que tu veux? Je sais pas si j'ai bien compris :p
0