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

 


Dernière réponse
Sujet : [SQL + Access] Nom generique pour designer le formulaire en cours ?
Jesus Army ok, ca me simplifira un peu les choses...
 
encore merci !

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Jesus Army ok, ca me simplifira un peu les choses...
 
encore merci !
Mara's dad 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 !
Jesus Army 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 ?
Jesus Army Ca a l'air de marcher.
 
Merci !!! ;)
Jesus Army ok merci.
 
Je vais essayer ca... je croise les doitgs :)
irulan 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...
Jesus Army J'en demande peut etre beaucoup mais comment je dois proceder ? ;)
irulan Si, normalement ça devrait fonctionner avec cette table de relation.
Jesus Army 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 ?
irulan 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...
Mara's dad 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.
Jesus Army 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. :(
Fred999 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.
Jesus Army 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 ;)
Jesus Army 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+
Mara's dad 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]

Jesus Army up ! j'y arrive toujours po :(
Jesus Army 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 ! :(
Jesus Army 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]


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