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
| Option Compare Database
Public Sub GenererInterventions()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim n As Long, r As Long, dt As Date, IT As String
Dim s As Long, m As Long, e As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("R_Inter2")
Set rs2 = db.OpenRecordset("Intervention", dbOpenDynaset)
Do Until rs1.EOF
IT = rs1!Intitule_intervention
r = rs1!Recurrence
n = Nz(rs1!NbRecurrence, 10)
m = rs1!CE_Machine
s = rs1!CE_Secteur
dt = rs1!Date_Intervention
rs1.MoveNext
If Not rs1.EOF Then
Do While (IT = rs1!Intitule_intervention) And (m = rs1!CE_Machine)
dt = rs1!Date_Intervention
If (rs1!CE_Etat <> 4) Then ' si pas terminé
n = n - 1 'on enlève une récurrence au total.
End If
rs1.MoveNext
If (rs1.EOF) Or (n = 0) Then ' sortie.
Exit Do
End If
Loop
End If
dt = dt + r
Do While (n > 0)
If (Not EstFerie(dt)) And (Weekday(dt) <> 1) Then
n = n - 1
rs2.AddNew
rs2!Intitule_intervention = IT
rs2!Date_Intervention = dt
rs2!Recurrence = r
'rs2!NbRecurrence = n
rs2!CE_Etat = 1
rs2!CE_Machine = m
rs2!CE_Secteur = s
rs2.Update
dt = dt + r
Else
dt = dt + 1
End If
Loop
' rs1.MoveNext
Loop
rs1.Close
Set rs1 = Nothing
rs2.Close
Set rs2 = Nothing
End Sub
Public Sub ReporterInterventions(ID As Long)
Dim db As DAO.Database
Dim rs1 As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim leSQL As String
Dim n As Long, r As Long, dt As Date, IT As String, m As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("select * from intervention where ID_Intervention=" & ID)
If Not rs1.EOF Then
IT = rs1!Intitule_intervention
dt = rs1!Date_Intervention
r = rs1!Recurrence
m = rs1!CE_Machine
leSQL = "select * from Intervention " & _
"where Intitule_Intervention like '" & IT & "' and CE_Machine=" & CStr(m) & " and Intervention.Date_Intervention>#" & Format(dt, "mm/dd/yyyy") & "# " & _
"order by Intervention.Date_Intervention asc;"
Set rs2 = db.OpenRecordset(leSQL, dbOpenDynaset)
dt = dt + 1
Do Until (Not EstFerie(dt)) And (Weekday(dt) <> 1)
dt = dt + 1
Loop
rs1.Edit
rs1!Date_Intervention = dt
rs1.Update
dt = dt + r ' prochaine date.
Do Until rs2.EOF
If (Not EstFerie(dt)) And (Weekday(dt) <> 1) Then
rs2.Edit
rs2!Date_Intervention = dt
rs2!Report = True
rs2.Update
rs2.MoveNext
dt = dt + r
Else
dt = dt + 1
End If
Loop
rs2.Close
Set rs2 = Nothing
End If
rs1.Close
Set rs1 = Nothing
End Sub |
Partager