Bonsoir,
Je dirai que le plus pratique serait un formulaire avec deux zones de texte ayant un format d'affichage Date,
pour les dates début et fin, et une requête utilisant ces deux contrôles du formulaire comme critère.
Si par exemple le formulaire est sauvé sous le nom fmKmEntre2dates et que les zones de texte sont nommées dtDeb et dtFin.
[Forms]![fmKmEntre2dates]![dtDeb] fait référence à la zone de texte dtDeb
[Forms]![fmKmEntre2dates]![dtFin] fait référence à la zone de texte dtFin
On pourra mettre en critère sur le champ date
Between [Forms]![fmKmEntre2dates]![dtDeb] And [Forms]![fmKmEntre2dates]![dtFin]
Entre [Forms]![fmKmEntre2dates]![dtDeb] Et [Forms]![fmKmEntre2dates]![dtFin]
Requête finale :
1 2 3 4 5
| SELECT [plaque véhicule], Max([kilométrage véhicule])-Min([kilométrage véhicule]) AS Kms,
Min([date compteur]) AS Du, Max([date compteur]) AS Au
FROM Kilométrage
WHERE ((([date compteur]) Between [Forms]![fmKmEntre2dates]![dtDeb] And [Forms]![fmKmEntre2dates]![dtFin]))
GROUP BY [plaque véhicule]; |
Ensuite, on ajoute un bouton au formulaire que l'on nomme cmdOuvrirRequete.
Dans l'onglet événement (pour le bouton), en face "Sur Clic" on choisit [procédure événementielle],
puis on clique sur le petit bouton [...] juste à droite.
On se retrouve dans l'éditeur visual basic avec le corps de procédure de l'événement.
Insérer par copier/coller les lignes manquantes de manière à obtenir
1 2 3 4 5 6 7 8 9
| Private Sub cmdOuvrirRequete_Click()
' remplacer Requête1 par le vrai nom de la requête
Const strRequete = "Requête1"
If Application.CurrentData.AllQueries(strRequete).IsLoaded Then
DoCmd.Close acQuery, strRequete
End If
DoCmd.OpenQuery strRequete, acViewNormal
End Sub |
A+
Partager