| 12
 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
 
 | Private Sub Commande3_Click()
 
'varible dans laquelle on sotcke la date maxi saisie par l'utilisateur
Dim DateF As String
 
 
Dim Max As Date
Max = "01/02/2050"
 
'Définition des variables qui vont contenir les résultats des 4 dernières analyse
'objectif final : créer 4 requêtes de sélection qui vont venir alimenter des sous états
 
Dim Date1 As Date
Dim Date2 As Date
Dim Date3 As Date
Dim Date4 As Date
Dim QryDate1 As DAO.QueryDef
Dim RsDate1 As DAO.Recordset
Dim QryDate2 As DAO.QueryDef
Dim RsDate2 As DAO.Recordset
Dim QryDate3 As DAO.QueryDef
Dim RsDate3 As DAO.Recordset
Dim QryDate4 As DAO.QueryDef
Dim RsDate4 As DAO.Recordset
 
Dim sqlResDate1 As String
Dim QryResDate1 As DAO.QueryDef
Dim RsResDate1 As DAO.Recordset
 
Dim sqlResDate2 As String
Dim QryResDate2 As DAO.QueryDef
Dim RsResDate2 As DAO.Recordset
 
Dim sqlResDate3 As String
Dim QryResDate3 As DAO.QueryDef
Dim RsResDate3 As DAO.Recordset
 
Dim sqlResDate4 As String
Dim QryResDate4 As DAO.QueryDef
Dim RsResDate4 As DAO.Recordset
 
 
'Je récupère mon numéro d exploitation provenant d'un autre formulaire
Dim Num As String
Num = Module4.NumExploit2
 
 
 
'Je vérifie si une date a été saisie dans le champ
 
If (IsNull(Me.DateFin)) Then
DateF = Max
 
Else
DateF = Me.DateFin
End If
 
 
'DETERTMINATION DE LA DATE MAXIMUM
 
sqlDate1 = "SELECT Max(DateA) FROM Analyse WHERE ((DateA<""" & DateF & """))AND (((NumExploitation) = """ & Num & """)) "
 
DoCmd.DeleteObject acQuery, "ReqDate1"
'supprime la requête
CurrentDb.CreateQueryDef "ReqDate1", sqlDate1
'crée une nouvelle requete
Set QryDate1 = CurrentDb.QueryDefs("ReqDate1")
Set RsDate1 = QryDate1.OpenRecordset
 
'je récupoère ma date maximum
Date1 = RsDate1(0)
 
'je crée une requête qui affiche les analyses effectuées à la date maxi pour une exploitation donnée
sqlResDate1 = "SELECT DateA,NumVache,NbCellules,QteLait FROM Analyse"
sqlResDate1 = sqlResDate1 & " WHERE (((NumExploitation)=""" & Num & """))"
sqlResDate1 = sqlResDate1 & " AND (((DateA)>=" & DateValue(Date1) & "))AND (((DateA)<=#" & DateValue(Max) & "#))"
sqlResDate1 = sqlResDate1 & " ORDER BY NumVache,DateA"
 
 
DoCmd.DeleteObject acQuery, "ListeAnalDate1"
CurrentDb.CreateQueryDef "ListeAnalDate1", sqlResDate1
Set QryResDate1 = CurrentDb.QueryDefs("ListeAnalDate1")
Set RsResDate1 = QryResDate1.OpenRecordset
 
 
'Je refais la même démarche pour l'avant dernière date, l'avant avant dernière....
sqlDate2 = "SELECT Max(DateA) FROM Analyse WHERE (((DateA)<#" & DateValue(Date1) & "#)) AND (((NumExploitation) = """ & Num & """)) "
DoCmd.DeleteObject acQuery, "ReqDate2"
'supprime la requête
CurrentDb.CreateQueryDef "ReqDate2", sqlDate2
'crée une nouvelle requete
 
Set QryDate2 = CurrentDb.QueryDefs("ReqDate2")
Set RsDate2 = QryDate2.OpenRecordset
 
If (IsNull(RsDate2(0))) Then
'MsgBox ("pas d'autre analyse 2 ")
Else
 
 
 
Date2 = RsDate2(0)
 
sqlResDate2 = "SELECT DateA,NumVache,NbCellules,QteLait FROM Analyse"
sqlResDate2 = sqlResDate2 & " WHERE (((NumExploitation)=""" & Num & """))"
sqlResDate2 = sqlResDate2 & " AND (((DateA)>=#" & DateValue(Date2) & "#))AND (((DateA)<=#" & DateValue(Date1) & "#))"
sqlResDate2 = sqlResDate2 & " ORDER BY NumVache,DateA"
 
DoCmd.DeleteObject acQuery, "ListeAnalDate2"
CurrentDb.CreateQueryDef "ListeAnalDate2", sqlResDate2
Set QryResDate2 = CurrentDb.QueryDefs("ListeAnalDate2")
Set RsResDate2 = QryResDate2.OpenRecordset
 
sqlDate3 = "SELECT Max(DateA) FROM Analyse WHERE DateA<" & Date2 & " AND (((NumExploitation) = """ & Num & """)) "
DoCmd.DeleteObject acQuery, "ReqDate3"
'supprime la requête
CurrentDb.CreateQueryDef "ReqDate3", sqlDate3
'crée une nouvelle requete
 
Set QryDate3 = CurrentDb.QueryDefs("ReqDate3")
Set RsDate3 = QryDate3.OpenRecordset
 
If (IsNull(RsDate3(0))) Then
 MsgBox ("pas d'autre analyse 3 ")
 Else
 
Date3 = RsDate3(0)
 
sqlResDate3 = "SELECT DateA,NumVache,NbCellules,QteLait FROM Analyse"
sqlResDate3 = sqlResDate3 & " WHERE (((NumExploitation)=""" & Num & """))"
sqlResDate3 = sqlResDate3 & " AND  (((DateA)>=#" & DateValue(Date3) & "#))AND (((DateA)<=#" & DateValue(Date2) & "#))"
sqlResDate3 = sqlResDate3 & " ORDER BY NumVache,DateA"
 
 
DoCmd.DeleteObject acQuery, "ListeAnalDate3"
CurrentDb.CreateQueryDef "ListeAnalDate3", sqlResDate3
Set QryResDate3 = CurrentDb.QueryDefs("ListeAnalDate3")
Set RsResDate3 = QryResDate3.OpenRecordset
 
sqlDate4 = "SELECT Max(DateA) FROM Analyse WHERE DateA<" & Date3 & " AND (((NumExploitation) = """ & Num & """)) "
DoCmd.DeleteObject acQuery, "ReqDate4"
'supprime la requête
CurrentDb.CreateQueryDef "ReqDate4", sqlDate4
'crée une nouvelle requete
 
Set QryDate4 = CurrentDb.QueryDefs("ReqDate4")
Set RsDate4 = QryDate4.OpenRecordset
 
Date4 = RsDate4(0)
If (IsNull(RsDate4(0))) Then
 MsgBox ("pas d'autre analyse 4 ")
 Else
 
 
sqlResDate4 = "SELECT DateA,NumVache,NbCellules,QteLait FROM Analyse"
sqlResDate4 = sqlResDate4 & " WHERE (((NumExploitation)=""" & Num & """))"
sqlResDate4 = sqlResDate4 & " AND (((DateA)>=#" & DateValue(Date4) & "#))AND (((DateA)<=#" & DateValue(Date3) & "#))"
sqlResDate4 = sqlResDate4 & " ORDER BY NumVache,DateA"
 
 
DoCmd.DeleteObject acQuery, "ListeAnalDate4"
CurrentDb.CreateQueryDef "ListeAnalDate4", sqlResDate4
Set QryResDate4 = CurrentDb.QueryDefs("ListeAnalDate4")
Set RsResDate4 = QryResDate4.OpenRecordset
 
End If
End If
End If
 
 
Num = ""
DoCmd.Close
 
 
End Sub |