Fonction max ne fonctionne plus lorsque date

Lordfrancky38 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
utena63 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Je suis en train de créer une base de données sous Access 2077 pour gérer le parc automobile de mon établissement.
J'ai 5 tables : Véhicules, Interventions, Relevé kilométrique, Liste service et Contrôle technique.
Dans la table Relevé kilométrique j'ai 4 champs :

- N° : clé primaire incrémentation auto,
- N° d'Immatriculation qui est un champ texte et qui sert de jointure avec la table Véhicules et qui est la clé primaire de la table véhicules,
- date relevé qui est un champ date
- kilométrage qui est un entier long.

Je veux faire une requête puis un état qui me donne le dernier relevé de km de chaque véhicule, j'utilise donc la fonction max sur le champ kilométrage afin qui me donne le dernier. Ceci fonctionne mais lorsque je veux aussi faire apparaître la date du dernier relevé la requête me donne pour résultat l'ensemble des relevés.
Je tourne autour du pot depuis un moment, si quelqu'un connait un autre moyen de faire ressortir le dernier relevé de chaque véhicule avec la date du relevé il me rendrait un énorme service.

Merci d'avance pour vos réponses.
A voir également:

3 réponses

castours Messages postés 2955 Date d'inscription   Statut Membre Dernière intervention   217
 
Bonjour
Comme je suppose,tu peux selectionner ton véhicule.
Alors tu peux faire un tri croissant sur les dates. ou sur les relevés KM
0
Lordfrancky38 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Salut Castours,

Merci pour ta réponse mais ça ne fonctionne pas j'enrage, mais peux tu être plus clair car je ne vois pas comment un tri croissant pourrait m'éviter d'avoir l'ensemble des relevé car je veux seulement le dernier relevé donc celui ayant le plus de km (max) sur relevé km ou le plus récent (max) sur la date du relevé mais lorsque je veux que le champ date fasse parti des champ affiché il me donne plusieurs relevé par véhicule. Je vais pour vous aider un peu mettre le SQL de c'est 2 requêtes:

1 - Requête m'affichant les bon résultat :

SELECT DISTINCTROW [Relevés kilométriques].N°, Format$([Véhicules].[Date Immatriculation],'yyyy') AS [Année d'immatriculation], Véhicules.Service, Véhicules.[Type Véhicule], Véhicules.Energie, Véhicules.[N° d'Immatriculation], Max([Relevés kilométriques].[Nbr Kms]) AS Kilométrage
FROM Véhicules INNER JOIN [Relevés kilométriques] ON Véhicules.[N° d'Immatriculation] = [Relevés kilométriques].[N° IMMATRIC]
GROUP BY [Relevés kilométriques].N°, Format$([Véhicules].[Date Immatriculation],'yyyy'), Véhicules.Service, Véhicules.[Type Véhicule], Véhicules.Energie, Véhicules.[N° d'Immatriculation], Year([Relevés kilométriques].[Date relévé]), Year([Véhicules].[Date Immatriculation]);

2 - Requête me donnant des résultat erronés:

SELECT DISTINCTROW [Relevés kilométriques].N°, Format$([Véhicules].[Date Immatriculation],'yyyy') AS [Année d'immatriculation], Véhicules.Service, Véhicules.[Type Véhicule], Véhicules.Energie, Véhicules.[N° d'Immatriculation], Max([Relevés kilométriques].[Nbr Kms]) AS Kilométrage, [Relevés kilométriques].[Date relévé]
FROM Véhicules INNER JOIN [Relevés kilométriques] ON Véhicules.[N° d'Immatriculation] = [Relevés kilométriques].[N° IMMATRIC]
GROUP BY [Relevés kilométriques].N°, Format$([Véhicules].[Date Immatriculation],'yyyy'), Véhicules.Service, Véhicules.[Type Véhicule], Véhicules.Energie, Véhicules.[N° d'Immatriculation], Year([Relevés kilométriques].[Date relévé]), Year([Véhicules].[Date Immatriculation]), [Relevés kilométriques].[Date relévé];

La seule différence entre les deux c'est que je souhaite faire apparaître le champ date relevé dans la seconde et on dirait qu'il n'applique plus la fonction Max sur le champ ([Relevés kilométriques].[Nbr Kms]

Aider moi je suis perdu.
0
utena63 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour,

fait Max sur le champs date avec une sous requête dans Where

ex : where date = (select max(date)
from relevé kilométrique);


Rappel : Max(nom_champ) donne la valeur maximal du champ
0