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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
| Public Sub Planning_gen_all()
Dim db As Database
Dim rs1, rs2, rs3, rs4, rs5, rs6 As Recordset
Dim a As Integer
Dim d, dm As Date
Dim s1, s2 As String
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Planning")
Set rs2 = db.OpenRecordset("OPparLocomotives")
Set rs3 = db.OpenRecordset("CategoriesOP")
Set rs4 = db.OpenRecordset("TypesOP")
Set rs5 = db.OpenRecordset("DateMaxInterventions")
Set rs6 = db.OpenRecordset("Stockage_Val")
Do Until rs2.EOF 'Partie transphert
If rs2.Fields("Transphere") = False Then
rs2.Edit
rs2.Fields("CompteurPourFonction") = rs2.Fields("Compteur") + 1
rs2.Update
While rs2.Fields("CategorieOP") <> rs3.Fields("CategorieOP") 'Cherche la bonne Catégorie d'op pour ajouter la date
rs3.MoveNext
Wend
a = rs3.Fields("Periodicite") 'Prend la bonne durée à ajouter
rs3.MoveFirst
d = rs2.Fields("Dateprecedente")
d = DateAdd("m", a, d) 'Additionne la bonne date
'Procédure pour déterminerle niveau de maintenance
If rs2.Fields("CategorieOP") = "IH/IT" Then 'Procédure spéciale pour le IH/IT
While (rs4.Fields("CategorieOP") <> "IH/IT") Or (Mid(rs4.Fields("TypeOP"), 2, 1) <> "H") Or (rs2.Fields("CompteurPourFonction") Mod rs4.Fields("Taux") <> 0)
rs4.MoveNext
Wend
s1 = rs4.Fields("TypeOP")
rs4.MoveFirst
While (rs4.Fields("CategorieOP") <> "IH/IT") Or (Mid(rs4.Fields("TypeOP"), 2, 1) <> "T") Or (rs2.Fields("CompteurPourFonction") Mod rs4.Fields("Taux") <> 0)
rs4.MoveNext
Wend
s1 = s1 + "/" + rs4.Fields("TypeOP")
s2 = Nz(rs4.Fields("Intervenant"))
If s1 = "IH0/IT1" Then
s1 = "IT1"
End If
Else 'Procédure standart pour le reste
While (rs2.Fields("CategorieOP") <> rs4.Fields("CategorieOP")) Or (rs2.Fields("CompteurPourFonction") Mod rs4.Fields("Taux") <> 0)
rs4.MoveNext
Wend
s1 = rs4.Fields("TypeOP")
s2 = Nz(rs4.Fields("Intervenant"))
End If
rs4.MoveFirst
rs1.AddNew 'Création des enregistrements transphérés
rs1.Fields("CategorieOP") = rs2.Fields("CategorieOP")
rs1.Fields("NdeSerie") = rs2.Fields("NdeSerie")
rs1.Fields("DateInitiale") = d
rs1.Fields("DateRef") = d
rs1.Fields("TypeOP") = s1
rs1.Fields("Intervenant") = s2
rs1.Fields("Compteur") = rs2.Fields("CompteurPourFonction")
rs1.Update
rs2.Edit
rs2.Fields("Transphere") = True
rs2.Fields("CompteurPourFonction") = rs2.Fields("CompteurPourFonction") + 1
rs2.Update
End If
rs2.MoveNext
Loop
rs2.MoveFirst
dm = rs6.Fields("Date_Gen_Mini")
Do Until rs5.EOF 'Partie génération
d = rs5.Fields("MaxDeDateInitiale")
If d < dm Then 'Génère des enregistrements jusqu'à dépasser la date finale définie plus haut
While rs3.Fields("CategorieOP") <> rs5.Fields("CategorieOP") 'Trouve le bon nombre de mois à ajouter
rs3.MoveNext
Wend
While rs2.Fields("CategorieOP") <> rs5.Fields("CategorieOP") Or rs2.Fields("NdeSerie") <> rs5.Fields("NdeSerie")
rs2.MoveNext
Wend
a = rs3.Fields("Periodicite")
While d < dm
d = DateAdd("m", a, d)
'Procédure pour déterminerle niveau de maintenance
If rs5.Fields("CategorieOP") = "IH/IT" Then 'Procédure spéciale pour le IH/IT
While (rs4.Fields("CategorieOP") <> "IH/IT") Or (Mid(rs4.Fields("TypeOP"), 2, 1) <> "H") Or (rs2.Fields("CompteurPourFonction") Mod rs4.Fields("Taux") <> 0)
rs4.MoveNext
Wend
s1 = rs4.Fields("TypeOP")
rs4.MoveFirst
While (rs4.Fields("CategorieOP") <> "IH/IT") Or (Mid(rs4.Fields("TypeOP"), 2, 1) <> "T") Or (rs2.Fields("CompteurPourFonction") Mod rs4.Fields("Taux") <> 0)
rs4.MoveNext
Wend
s1 = s1 + "/" + rs4.Fields("TypeOP")
s2 = Nz(rs4.Fields("Intervenant"))
If s1 = "IH0/IT1" Then
s1 = "IT1"
End If
Else 'Procédure standart pour le reste
While (rs5.Fields("CategorieOP") <> rs4.Fields("CategorieOP")) Or (rs2.Fields("CompteurPourFonction") Mod rs4.Fields("Taux") <> 0)
rs4.MoveNext
Wend
s1 = rs4.Fields("TypeOP")
s2 = Nz(rs4.Fields("Intervenant"))
End If
rs1.AddNew 'Création des enregistrements générés
rs1.Fields("NdeSerie") = rs5.Fields("NdeSerie")
rs1.Fields("CategorieOP") = rs5.Fields("CategorieOP")
rs1.Fields("DateInitiale") = d
rs1.Fields("DateRef") = d
rs1.Fields("TypeOP") = s1
rs1.Fields("Intervenant") = s2
rs1.Fields("Compteur") = rs2.Fields("CompteurPourFonction")
rs1.Update
rs2.Edit
rs2.Fields("CompteurPourFonction") = rs2.Fields("CompteurPourFonction") + 1
rs2.Update
rs4.MoveFirst
Wend
End If
rs2.MoveFirst
rs3.MoveFirst
rs5.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
rs2.Close
Set rs2 = Nothing
rs3.Close
Set rs3 = Nothing
rs4.Close
Set rs4 = Nothing
rs5.Close
Set rs5 = Nothing
rs6.Close
Set rs6 = Nothing
db.Close
Set db = Nothing
End Sub |
Partager