Problème: Calcul d'un temps de fonctionnement avec arrêt

Résolu
tonyo08 Messages postés 12 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 26 juin 2006 - 22 sept. 2004 à 17:17
tonyo08 Messages postés 12 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 26 juin 2006 - 13 sept. 2005 à 10:05
Salut à tous!

Je développe actuellement un programme pour ma boite. Ce programme conciste à repertorier des casses de carters ainsi qu'a produire (c'est la le but final) des statistiques annuelles et autres. Mon problème est un calcul de temps de fonctionnement que je n'arrive pas à mettre en oeuvre!

Je m'explique:
J'ai 140 Carters de répertoriés. Je dois obtenir le temps de fonctionnement de chaque carter à n'importe quels moments.
Le temps de fonctionnement c'est le temps où le carter est présent sur le parc machine. Lorsque l'utilisateur saisie une casse d'un carter, celui-ci passe en atelier (donc hors parc machine) et la son temps de fonctionnement doit s'arreter. Il est ensuite réparé et remis sur le parc, et la son temps de fonctionnement reprends (non pas à 0 mais reprends la où il en était arrêté). Ceci jusqu'à ce que ce carter soit déclaré HS, et la son temps de fonctionnement est redéfinit à 0.

Mon problème c'est comment mettre en pause son tps de fonctionnement (ou ne plus le calculer si il est en atelier) et le reprendre par la suite.

J'ai pensé au timer, ms je ne crois pas qu'il soit adapté pr cette situation. Je pense qu'il faut traiter ça par les dates, mais comment ... ?

Si qqn a une idée, elle est vraiment la bienvenue étant donné la date de fin de ce projet asser proche %-6

Merci d'avance,

Tonyo

SkaIn^Prog|ReS

5 réponses

tonyo08 Messages postés 12 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 26 juin 2006
13 sept. 2005 à 10:05
Bon j'ai enfin fini le projet et je viens finir mes posts :) Pas loin d'un an après... je sais lol

En fait, pour ce problème, j'ai créé pour chaque carter une date de début et une date de fin de fonctionnement. Ainsi, pour calculer son temps de fonctionnement, je fais la somme des différences et j'obtiens ce que je veux:
(Date_Fin - Date_Debut) + (Date_Fin - Date_Debut) + ...

Merci, à bientot!

Tonyo
3
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
22 sept. 2004 à 17:27
Ne peux tu faire, pour chaque objet, un tableau dynamique des arrêts pour réparation ? Tu y met la date de début de réparation, la date de fin de réparation et, à chaque fois qu'il te faut le temps de fonctionnement total, tu fait :
"maintenant - date_début_fonct + (fin_repar - début_repar)(boucle sur toutes les répar)"

;) Flachy Joe ;)
0
ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005
22 sept. 2004 à 18:06
ouep defini toi un type:
Type LesCarter
id as long
tempsDebut as long (ou date ça depend comment tu veu gérer le temps)
TempsEcoulé as long
Actif as Boolean (tant qu'il est actif TempsEcoulé peu par exemple d'incrémenter)
[...](tempsFin, ou se que tu veu)
end Type

dim MonTableauDynamique() as Lescarter

Donc tu te fait une fonction où dans une boucle (Do while pom=true ..... Loop) qui parcourt tout le temps le tableau pour metre a jour ou non chaque entrée.
Avec un tableau comme ça c'est simple pour le sauvegarder sur le disque.
0
tonyo08 Messages postés 12 Date d'inscription jeudi 14 août 2003 Statut Membre Dernière intervention 26 juin 2006
4 oct. 2004 à 17:32
Excusez moi pr le retard, j'alterne taff et formation et c'est pas simple en ce moment, bref .. :)

Je ne comprends pas tres bien le principes des tableaux dynamiques .. Le programme ne tourne pas tout le temps, donc je ne sais pas si on peut parler de temps écoulé ou encore de marquers représentés par une var booléenne. Pour plus d'informations je vous montre sur quelle table je me base.

Table: Chng_Position
Id NumCarter Position DateChangement
1 123456 1-2-4-5-h-5 25/07/2003
2 123456 0-0-0-0-0-0 28/07/2003
3 123456 1-2-3-2-b-2 12/10/2003
4 123456 0-0-0-0-0-0 24/10/2003
5 123456 1-2-3-1-h-1 26/10/2003
6 123456 1-2-4-2-h-2 20/11/2003

Les positions 0-0-0-0-0-0 sont les sorties de chaine. Il est possible qu'un carter change de position sans pour autant sortir, donc que son temps de fonctionnement ne s'arrete pas. (Le temps de fonctionnement se conpmtant en mois, on néglige les durées d'échange de ce type.

Tonyo

SkaIn^Prog|ReS
0

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

Posez votre question
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
5 oct. 2004 à 18:12
Le principe des tableaux dynamique est de redimensionner quand nécéssaire la place occupé par le tableau en mémoire, pour cela, on utilise la commande Redim [Preserve] tableau( taille)
le mot clef optionel preserve permet de redimensionner le tableau sans perdre les informations qu'il contient.

Dans ton cas, le tableau doit contenir les information de changemant de position, tu peux donc avoir :

type Chang
NumCarter
Position
DateChangement
end type

dim Tout_les_change(0) as Chang

Tu ajoute les changement à la liste en faisant :

dim id as long
id= ubound(Tout_les_change)+1 'indice max du tabl +1
redim preserve Tout_les_change(id)
Tout_les_change(id).numcarter = blablabla
...

les durée de sortie sont ensuite calculées quand c'est nécéssaire (a moins que t'es envie de les calculer à chaque changement et d'enregistrer au furs et a mesure)
Il faut parcourir le tabl à la recherche de chaque numcarter, verifier la position, et effectuer l'operation sur les dates.

si tu galere vraiement, envoie moi le début de ton projet (flachyjoe@hotmail.com)

;) Flachy Joe ;)
0
Rejoignez-nous