Bonjour,
Dans la table 'Article', pour un enregistrement, j'ai bien une liste de 6 machines maximum appartenant à la table 'Machine' qui en comporte 17.
…La table 'Fabrication' comporte effectivement 6 champs de tps de prod.
C’est bien ce que je craignais !
J'ai donc revu depuis la conception de la base en incluant dans la table 'fabrication' les champs tpsRéglage, tpsFabrication et nbreOpérateur pour chacune des 17 machines disponibles. Ce qui, du coup me donne une table à rallonge ....
Est-ce une bonne solution ?
C’est encore pire !!!
Seulement si je veux calculer, par exemple, le temps de fonctionnement de la machine qui coupe, cette valeur peut se retrouver dans tpsprod1, tpsprod2, ..., tpsprod6. D'où mon bloquage.
Oui je vois le problème maintenant, c’est en effet un peu compliqué.
Je te propose une ébauche de schéma un peu plus conforme aux canons relationnels qui t’éviteras ces déboires.
Article (N°Article, NomArticle)
Machine(N°Machine, NomMachine)
OrdreDeFabrication(N°OrdreFabrication, #N°Article, DateDébut, Datefin, qtté,….) reliée à Article
Fabrication(#N°OrdreFabrication, #N°Machine, DateFabrication, tpsFabrication,…) reliée à OrdreDeFabrication et Machine.
Exemple de requête permettant de calculer le temps de fonctionnement total par machine pour l’année en cours :
SELECT Machine.NomMachine, SUM(tpsFabrication) FROM Machine INNER JOIN Fabrication ON Fabrication.N°Machine=Machine.N°Machine WHERE YEAR(DateFabrication)=YEAR(DATE()) GROUP BY Machine.NomMachine
… Et comme seulement 6 machines maxi peuvent servir
Cette contrainte est-elle vraiment une règle de gestion écrite dans le cahier des charges de ton application GPAO ? Ou est-ce une limite supérieure que tu t’es fixée (parce que tu ne pouvais pas non plus rajouter indéfiniment des champs à tour de bras Machine7, Machine8…tpsProduc7, tpsProduc8…)
Sinon pour contraindre la table Fabrication à refuser de stocker plus de 6 machines pour un même ordre de fabrication il faudra bien mettre (un peu) les mains dans le cambouis SQL+VBA. C’est une autre histoire….
Courage…
Partager