Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
781 connectés 

  FORUM HardWare.fr
  Programmation

  [SQL + Access] Nom generique pour designer le formulaire en cours ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL + Access] Nom generique pour designer le formulaire en cours ?

n°45250
Jesus Army
Allez voir là bas si j'y suis
Posté le 08-07-2001 à 23:46:42  profilanswer
 

Alors voila.
 
J'au les tables :
 
trg(#CodeCellule,#date,tempsCycle,TempsOuverture,t
rg)
fabriquer(#codecellule,#date,scrap,qteprod)
Arret(#CodeArret,duree,datearret)
 
Je voudrais avoir pour une date (sachant qu'il y a plusieurs enregistrements par date) les resultats suivants :
 
Ai = ((Somme(arret.duree))/(somme(trg.tempsouverture)))*100
Nq = ((somme(trg.scrap)*somme(trg.tempscycle))/(somme(trg.tempsouverture)))*100
EC = 100-(Moy(trg) + Ai + Nq))
 
Si quelqu'un arrive à me faire ca, ca serait vraiment SUPER sympa ! Là j'ai trop de mal avec les dates !  Si qqun trouve que je ne donne pas assez de precision, demandez moi ce dont vous avez besoin pour pour parvenir a trouver la requete.
 
un GRAND merci ! ;)

 

[edtdd]--Message édité par Jesus Army--[/edtdd]

mood
Publicité
Posté le 08-07-2001 à 23:46:42  profilanswer
 

n°45252
Jesus Army
Allez voir là bas si j'y suis
Posté le 08-07-2001 à 23:54:38  profilanswer
 

euh... erratum. Ce sont les resultats pour un mois que je veux. et je n'arrive po à faire coordiner les dates des differentes tables et du coup tout est compté 20x ! :(

n°45506
Jesus Army
Allez voir là bas si j'y suis
Posté le 09-07-2001 à 23:32:02  profilanswer
 

up ! j'y arrive toujours po :(

n°45514
Mara's dad
Yes I can !
Posté le 10-07-2001 à 00:58:39  profilanswer
 

Dans la formule de Nq, tu parle de somme(trg.scrap), or scrap est un champ de fabriquer !
 
J'ai fait 4 requetes, avec comme mois de référence 06/2001 :  
c_Ai, c_Nq, c_Moy et c_Ec
 
cAi :
SELECT Sum([duree])/Sum([TempsOuverture])*100 AS Ai
FROM Arret, trg
WHERE (((Month([datearret]))=6) AND ((Month([trg].[date]))=6) AND ((Year([datearret]))=2001) AND ((Year([trg].[date]))=2001));
 
c_Nq :
SELECT Sum([scrap])*Sum([tempsCycle])/Sum([TempsOuverture])*100 AS Nq
FROM fabriquer, trg
WHERE (((Month([trg].[date]))=6) AND ((Month([fabriquer].[date]))=6) AND ((Year([trg].[date]))=2001) AND ((Year([fabriquer].[date]))=2001));
 
c_Moy :
SELECT Avg(trg.trg) AS Moy
FROM trg
WHERE (((Month([trg].[date]))=6) AND ((Year([trg].[date]))=2001));
 
et enfin c_EC :
SELECT 100-([Moy]+[Ai]+[Nq]) AS EC
FROM c_AI, c_Moy, c_Nq;
 
A voir donc si scrap est dans la bonne table !

 

[edtdd]--Message édité par Mara's dad--[/edtdd]


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45803
Jesus Army
Allez voir là bas si j'y suis
Posté le 10-07-2001 à 23:07:31  profilanswer
 

tu as raison, je me suis planté ! le scrap est bien dans la table fabriquer et pas trg....
 
Je n'ai malheureusement pas la base sur ce pc pour pouvoir tester tout de suite, mais tes requetes me plaisent ;)
 
J'espère que tout va marcher impec...
 
Je te suis infiniment reconnaissant de m'avoir repondu et d'avoir fait ces requetes !
 
Encore merci !
 
a+

n°45857
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 10:30:28  profilanswer
 

En fait ca pose toujours problème. :(
 
Mais je pense que c'est l'organisation de la base qui est en cause !
 
J'ai viré la table trg, car elle ne sert en fait à rien. le calcul du trg s'obtient grace au tempscycle et au temps d'ouverture que j'ai transféré dans la table Fabriquer.
 
J'ai donc maintenant les tables :  
 
Fabriquer(#CodeCellule,#Date,#ReferencePiece,Quant
iteProduite,scrap,tempsouverture,tempscycle)
Arret(#CodeArret,duree,datearret)
 
Je pense que je dois faire quelque chose en ce qui concerne les date car là j'obtiens le problème suivant :
Quand je fais, par exemple, la somme des arrets dans une requete du type :
 
Select sum(duree) from arret;
 
j'obtiens la somme coreecte, mais lorsque que j'utilise une requete qui fait intervenir les 2 tables comme :
 
SELECT Sum(duree),Sum([duree])/Sum([TempsOuverture])*100 AS Ai  
FROM Arret, trg  
WHERE (((Month([datearret]))=6) AND ((Month([trg].[date]))=6) AND ((Year([datearret]))=2001) AND ((Year([trg].[date]))=2001));
 
j'obtiens un chiffre halucinant pour la duree (+ de 300 fois plus grand que la somme "normale"...)
 
Comme j'ai toujours du mal avec la gestion des dates je pense que le problème vient de là...
 
J'attends vos conseils ;)

n°45862
Fred999
Rabat-joie
Posté le 11-07-2001 à 10:34:37  profilanswer
 

Je pense qu'il manque au minimum une jointure entre tes tables, qui résulte en un produit cartésien... et donc ta requête part en sucette.

n°45867
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 10:41:09  profilanswer
 

C a d ? Je suis pas un pro en gestion de bases...
 
Je dois faire quel type de jointure ?
Avec un INNER JOIN sur les dates ca n'a pas l'air de marcher non plus. :(

n°45878
Mara's dad
Yes I can !
Posté le 11-07-2001 à 11:13:09  profilanswer
 

Tu ne peut pas faire de jointure, si tu n'a pas de champ à mettre en corespondance dans tes tables.
Dans Fabriquer, tu as un CodeCellule, il faudrait par exemple avoir quelque chose d'équivalent dans la table Arret pour faire la jointure.
 
Sinon, fait comme moi, avec des requetes intermédiaires.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°45880
irulan
Posté le 11-07-2001 à 11:21:31  profilanswer
 

Qaund Fred999 te dis qu'il manque une jointure entre tes bases, cela signifie qu'il manque un élément pour faire correspondre un arrêt à une cellule donnée.
 
Ce qui signifie par exemple si dans la table Fabriquer tu as 3 enregistrements dont les code cellules sont CC1, CC2et CC3, et que dans Arrêt tu as 2 enregistrements CA1 et CA2, lorsque tu demandes à ton système de gestion de base de données de lancer la requête qui récupère tout, celui-ci n'a auune info sur comment rattacher un arrêt à un code cellule. Donc logiquement il te fait un produit cartésien :
 
Tu récupères alors 6 lignes :
CC1 - CA1
CC1 - CA2
CC2 - CA1
CC2 - CA2
CC3 - CA1
CC3 - CA2
 
Pas étonnant dès lors que ta somme soit monstrueuse !
 
Il faudrait que tu aies une info pour rattacher des codes cellules à des codes arrêts.
La date peut être une info, mais en plus des problèmes posés par les heures (il faudra qu'une date ET heure d'arrêt corresponde exactement à une date ET heure de Fabriquer), cela ne résoudra pas complètement le problème de produit cartésien à mon avis...

mood
Publicité
Posté le 11-07-2001 à 11:21:31  profilanswer
 

n°45882
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 11:30:47  profilanswer
 

je ne gère pas les heures, donc je n'aurais pas de problèmes de ce coté là...
Mais en revanche il n'y a pas le meme nombre d'enregistrements pour une meme date dans la table Fabriquer et dans la table Arret...
 
Mais j'ai en fait la table TypeAi qui pourrait peut etre arranger un peu les chose. :??:
 
TypeAi(NumAi,libelleAi,#CodeCellule)
et la table arret contient en fait arret(CodeArret,Duree,DateArret,#NumAi)
 
Le fait que la table NumAi contienne le CodeCellule ne peut il pas arranger tout ca ?

n°45886
irulan
Posté le 11-07-2001 à 11:41:42  profilanswer
 

Si, normalement ça devrait fonctionner avec cette table de relation.

n°45890
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 11:47:00  profilanswer
 

J'en demande peut etre beaucoup mais comment je dois proceder ? ;)

n°45894
irulan
Posté le 11-07-2001 à 11:51:57  profilanswer
 

SELECT.....
FROM TypeAi,Arret,Fabriquer
WHERE Fabriquer.#CodeCellule = TypeAi.#CodeCellule
AND Arret.#NumAi = TypeAi.#NumAi
AND ...
 
Voilà la syntaxe de la jointure, à toi de rajouter ce qu'il te faut en plus comme critères...

n°45895
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 11:57:32  profilanswer
 

ok merci.
 
Je vais essayer ca... je croise les doitgs :)

n°45908
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 13:06:58  profilanswer
 

Ca a l'air de marcher.
 
Merci !!! ;)

n°45935
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 14:35:41  profilanswer
 

Sinon, je voulais savoir autre chose...
 
Quand je veux recuperer des valeurs depuis un formulaire (dans des textboxs par exemple), suis-je obligé d'ecrire à chaque à chaque fois le nom du formulaire dans la requete et de faire plein de requetes presques identiques (une pour chaque formulaire), ou il est possible de mettre un nom de formulaire "generique" (comme &me ou un truc ds le genre :??: )indiquant à Access qu'il sagit du formulaire actuellement ouvert ?

n°45997
Mara's dad
Yes I can !
Posté le 11-07-2001 à 17:09:55  profilanswer
 

Non, c'est pas possible, pour la bonne raison que tu peux avoir plusieurs formulaires ouverts en même temps et que tes requêtes peuvent utiliser un champs d'un autre formulaire.
 
La seule solution passe par du code VB.
1- ne pas mettre de requête sur le formulaire.
2- sur le champs contenant la donnée qui paramètre la requête, il faut mettre du code VB sur l'événement _Change() qui va se charger de générer la requête du formulaire et ensuite de la rafraichir. Exemple :
 
Private Sub Texte0_Change()
 
Me.RecordSource = "SELECT * FROM MaTable WHERE NOM='" + Texte0.Value + "';"
Me.Requery
 
End Sub
 
Dans ce cas, Me veut dire Le formulaire donc le champs texte fait partie !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°46044
Jesus Army
Allez voir là bas si j'y suis
Posté le 11-07-2001 à 23:31:35  profilanswer
 

ok, ca me simplifira un peu les choses...
 
encore merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [SQL + Access] Nom generique pour designer le formulaire en cours ?

 

Sujets relatifs
[HTML] Probleme case tete avec un formulaire.[PHP + Access] "odbc_num_rows" ne marche pas
Base de donnée access[javascript] ptit probleme avec un formulaire
exécuter une macro access depuis vb6[]Access VBa]Recherche une fonction de base
Pbm de compatibilité entre VB6 et Access 2000, ça commence a m'enerverPassage de variables dun form[ACCESS SQL]
Recherche un bon tutorial VBA pour ACCESS 
Plus de sujets relatifs à : [SQL + Access] Nom generique pour designer le formulaire en cours ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR