Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2008, 09h51   #1
Débutant
 
Inscription : décembre 2007
Messages : 1 209
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 1 209
Points : 212
Points : 212
Par défaut Gestion des actions de maintenance préventive

Bonjour, je voudrais gérer mes actions de maintenance de la façon suivante. Avoir une table maintenance préventive répertoriant toutes les actions de maintenance préventive, une table maintenance préventive à effectuer, et une table historique maintenance préventive.

Mon idée, est de venir faire un test dans ma table maintenance préventive. Si la date d'intervention est égale à aujourd'hui, alors je copie l'intervention à effectuer dans la table maintenance préventive à effectuer, et je réincrémente ma date d'intervention dans ma table maintenance préventive, de sa périodicité.

Ensuite, quand j'ai terminé mon intervention, je la transfert vers ma table historique des maintenance préventive.

La démarche vous paraît elle correcte? Avec 3 tables? Ou vous vooyez sa plus simple?

Il faut donc part exemple que si une action de maintenance préventive a une périodicité "hebdomadaire", et que si j'ouvre ma base dans 3 semaines, l'action doit avoir été mise 3 fois dans la table maintenance préventive à effectuer?!!!!

Est ce que tout cela paraît cohérent?
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h03   #2
Membre actif
 
Avatar de psykodumarteau
 
Inscription : avril 2008
Messages : 184
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2008
Messages : 184
Points : 181
Points : 181
Bonjour,

Personnellement je ne vois pas l'intérêt de la table "l'intervention à effectuer". Elle peux être remplacer par une simple requête sur la première table. Dans ta première table tu mets les champs : Périodicité, dernière intervention, prochaine intervention et tu mets à jour ces champs lorsque tu crées un nouvel enregistrement dans la table "historique des maintenance préventive".

Cordialement
__________________
Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]
psykodumarteau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 10h15   #3
Débutant
 
Inscription : décembre 2007
Messages : 1 209
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 1 209
Points : 212
Points : 212
re et merci pour ta participation.

Actuelement, j'ai 2 tables, et c'est celles que tu dit. A savoir une table maintenance préventive:

tbl_MaintenancePreventive, avec les champs suivants

-ID_Maintenance préventive
-ID_Machine
-ID_Périodicité
-ID_Type
-Element
-Descriptif
-Consigne de sécurité
-Outillage spécial
-Gamme de démontage
-DateDerniereIntervention
-DateProchaineIntervention

tbl_HistoriqueMaintenancePreventive, avec les champs

-ID_HistoriqueMaintenenancePreventive
-ID_MaintenancePreventive
-ID_Personnel
-Date_Intervention
-Commentaire
-DuréeIntervention

Je ne vois pas ensuite comment je peut faire juste avec ces 2 tables, pour voir apparaître dans une requête, 2 fois une intervention, si celle ci n'a pas était effectuée?

Ton idée, toi, c'est dans ta requête d'afficher une intervention, si la date est <=Date système, et que si je dit que cette intervention a été effectuée, alors je réincrémente de la périodicité?

Merci
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 16h55   #4
Membre actif
 
Avatar de psykodumarteau
 
Inscription : avril 2008
Messages : 184
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2008
Messages : 184
Points : 181
Points : 181
Re,

Oui en gros c'est ça.

Citation:
je peut faire juste avec ces 2 tables, pour voir apparaître dans une requête, 2 fois une intervention, si celle ci n'a pas était effectuée?
Pourquoi veux-tu voir deux fois une opération de maintenance qui n'a pas était effectuée? Si tu veux mettre en évidence les opérations de maintenance qui auraient dû être effectuées plusieurs fois, tu peux toujours mettre un champs dans ta requête qui fait : "(DateProchaineIntervention-DateDerniereIntervention)/Frequence". Note qu'il faut que tu définisse dans la fréquence dans la table "tbl_MaintenancePreventive" ça te servira aussi pour la mise à jour de la table (voir partie suivante).

Citation:
si je dit que cette intervention a été effectuée, alors je réincrémente de la périodicité?
Je ne ferais pas vraiment comment ça. Je ferait un interface pour que les opérateurs puissent saisir les opérations qu'ils ont effectuées. A chaque nouvelle opération saisie par un opérateur je mettrai à jour la table "tbl_MaintenancePreventive" en faisant :

DateDerniereIntervention = date système
DateProchaineIntervention = date système + fréquence

Cordialement
__________________
Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]
psykodumarteau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 14h15   #5
Débutant
 
Inscription : décembre 2007
Messages : 1 209
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 1 209
Points : 212
Points : 212
Oui c'est ce que j'ai fait en fait!

Seul problème, je ne peut pas savoir si une opération à été faite en retard ou quoi...

O pire je vais intégrer un label sur évenement clic sur la zone de liste pour afficher le ratard de l'intervention, et dans ma table "historique maintenance préventive", je peut toujours mettre un champ retard qui me calcul la différence entre la date d'insertion et la date de validation de l'action!

Voila

Si d'autres personnes ont procédés autrement
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 14h23   #6
Membre actif
 
Avatar de psykodumarteau
 
Inscription : avril 2008
Messages : 184
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2008
Messages : 184
Points : 181
Points : 181
Bonjour,

Ce que je t'aurai conseillé c'est de mettre un champ "Date d'intervention prévu" dans la table "historique maintenance préventive" et lorsque tu ajoute un enregistrement tu mets dans ce champ la valeur de "DateProchaineIntervention" de la table "tbl_MaintenancePreventive". Comme ça tu peux savoir quelles sont les maintenance faite en retard, de combien et savoir le retard moyen.

Cordialement
__________________
Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]
psykodumarteau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 16h38   #7
Débutant
 
Inscription : décembre 2007
Messages : 1 209
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 1 209
Points : 212
Points : 212
OK ba je vais voir sa!

Mais le problème de cette solution, est que si l'intervention est hebdomadaire, et que le gars loupe une semaine, cela ne se vera pas, si?

Ah si ptetre en faite... Puisque sa réincrémentera la date que si l'intervention est effectuée...

Bon ba je vais essayé sa!

Merci pour ton aide je te tien au courant
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 16h40   #8
Débutant
 
Inscription : décembre 2007
Messages : 1 209
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 1 209
Points : 212
Points : 212
Pas besoin de mettre un champ retard dans ma table historique si?

Le calcul sera fait avec des requêtes, ou je peut le faire direct dans la table?
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 16h49   #9
Débutant
 
Inscription : décembre 2007
Messages : 1 209
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 1 209
Points : 212
Points : 212
Ah oé mais petit problème je rencontre un problème dans ta solution, puisque je réincrémente la date avant, donc forcément, elle est égale à une date plus récente que la date d'intervention...

Voila le code de mon bouton OK:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Private Sub cmdValider_click()
 
 
Dim id_MaintenancePréventive, ID_Personnel, DuréeIntervention As Integer
Dim sql, Commentaire As String
Dim DateMaintenancePréventive As Date, DatePrevueInitialement As Date
Dim oRst As DAO.Recordset
Dim odb As DAO.Database
 
If Me.txtIDDemande.Caption = "null" Then Exit Sub
 
Set odb = CurrentDb
 
id_MaintenancePréventive = Me.txtIDDemande.Caption
Commentaire = Me.txtCommentaire
Commentaire = Replace(Commentaire, "'", "''")
DuréeIntervention = Me.listeDurée
sql = "select * from tbl_MaintenancePréventive where id_MaintenancePréventive = " & id_MaintenancePréventive & ";"
Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
ID_Périodicité = oRst.Fields("ID_Périodicité").Value
DatePrevueInitialement = oRst.Fields("DateProchaineIntervention").Value
 
sql = "Select NombreDeJours from tbl_Périodicité where ID_Periodicité = " & ID_Périodicité & ""
Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
 
ProchaineIntervention = oRst.Fields("NombreDeJours").Value + Date
 
sql = "Update tbl_MaintenancePréventive set DateDerniéreIntervention='" & Date & "', DateProchaineIntervention = '" & ProchaineIntervention & "'  where  ID_MaintenancePréventive =" & id_MaintenancePréventive & ";"
odb.Execute (sql)
 
sql = "Select Max(ID_HistoriqueMaintenancePréventive) from tbl_HistoriqueMaintenancePréventive"
Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
id_HistoriqueMaintenancePréventive = oRst.Fields(0).Value + 1
 
ID_Personnel = Me.listeIntervenant
 
sql = "insert into tbl_HistoriqueMaintenancePréventive values (" & id_HistoriqueMaintenancePréventive & ", '" & id_MaintenancePréventive & "' ," & ID_Personnel & ",'" & Date & "', '" & DatePrevueInitialement & "', '" & Commentaire & "', " & DuréeIntervention & " )"
odb.Execute (sql)
 
MsgBox ("Votre Intervention a été correctement enregistrée")
DoCmd.Close
Form_SignalerMaintenancePreventiveTerminé.Refresh
Form_SignalerMaintenancePreventiveTerminé.txtRetard.Caption = ""
 
 
End Sub
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 08h31   #10
Membre actif
 
Avatar de psykodumarteau
 
Inscription : avril 2008
Messages : 184
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2008
Messages : 184
Points : 181
Points : 181
Bonjour,

Je reprend pour pouvoir :

- identifier si une opération de maintenance est en retard, il faut regarder la table "tbl_MaintenancePreventive" puisque c'est elle qui contient l'état courant des la maintenace. Comme ça avec un requête tu peux dire qu'elle sont les maintenances à effectuer dans les 5 prochains jour par exemple.

- identifier les maintenances qui ont été effectué en retard c'est la table "historique maintenance préventive" qu'il faut utiliser puisque c'est qui contient ce qui c'est réellement passé. C'est pourquoi il faut que tu ajoute dans cette table un pour mettre soit le retard de l'opération, soit la date à laquelle aurai due être effectuée. Chaque fois qu'une nouvelle opération de maintenance est ajouter à l'historique il faut tu relevé la date de réalisation réelle et la date de maintenance théorique. Comme ça avec un simple requête tu pourra isoler les maintenance effectuées en retard, calculer le retard moyen...

Cordialement
__________________
Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]
psykodumarteau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 09h34   #11
Débutant
 
Inscription : décembre 2007
Messages : 1 209
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 1 209
Points : 212
Points : 212
Oui je suis d'accord, mais dans mas structure des tables, la date à laquelle l'interevntion auré dû etre effectuée, est le date prochaine intervention!!! (tu est d'accord")

Mais le problème, c'est que je réincrémente cette date de la périodicité d'intervention, elle pernd donc la date de prochaine intervention, ce qui signifie qu'elle est supérieure à la date de l'interevntion et docn que je ne pourrait jamais observé le ratard de l'interevtnion....

Regarde la requete que je t'ai mis!

Merci
moilou2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 09h46   #12
Membre actif
 
Avatar de psykodumarteau
 
Inscription : avril 2008
Messages : 184
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2008
Messages : 184
Points : 181
Points : 181
Re,

Récupère la valeur avant de la mettre à jour. Ton formulaire de saisi d'opération de maintenance contient le champ "date d'intervention prévue" (en invisible) et tu utilise ton recordset pour y mettre la valeur de la table maintenance préventive avant de la mettre à jour.

Cordialement
__________________
Etant philosophe, j'ai un problème pour chaque solution. [R. Zend]
psykodumarteau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h41.


 
 
 
 
Partenaires

Hébergement Web