ACCESS 2013: Limiter l'affichage dans un état

Résolu
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai créé un état historique dans lequel je voudrais limiter l'affichage du nombre d'enregistrements.

J'ai fait 3 regroupements et la section "Détail" affiche l'historique des dates. Je voudrais afficher seulement les 5 dernières.

Après quelques recherches, j'ai trouvé la clause TOP à mettre dans ma requête SQL. Celle-ci limite bien le nombres d'enregistrements mais sur la totalité de l'état, alors que moi, je voudrais limiter par groupe.

Je suis peut-être sur une piste avec les sous-totaux de groupe, mais je bloque.

Si quelqu'un pouvait m'aider, d'avance merci.

A voir également:

7 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
je suggère que que crées d'abord une requête qui te retourne les enregistrements que tu veux afficher, et que l'état utilise cette requête comme source.

voici un exemple de requête, qui retourne, pour chaque famille, les deux personnes les plus agées:
select * from persos as p1
where id in
(select top 2 id from persos as p2
where p1.nom=p2.nom
order by ddn desc)
0
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci, mais ma requête est trop complexe pour moi pour faire cette modif.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
peux-tu partager la syntaxe SQL de la requête source de l'état?
0
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Voici ma requête:
SELECT T_Interventions.ID_Intervention, T_Interventions.ID_Secteur, T_Interventions.ID_Sous_secteur, T_Interventions.ID_materiel, T_Interventions.Description_intervention, T_Interventions.En_standby, T_Historique_Interventions.Date_derniere_interv, T_Historique_Interventions.Resultat, T_Gestion_interventions.Periodicite_date, [T_Gestion_interventions]![Date_derniere_interv]+[T_Gestion_interventions]![Periodicite_date] AS proch_interv_date, T_Interventions.DC FROM (T_Gestion_interventions LEFT JOIN T_Compteurs ON T_Gestion_interventions.ID_Compteur = T_Compteurs.ID_Compteur) INNER JOIN (T_Interventions INNER JOIN T_Historique_Interventions ON T_Interventions.ID_Intervention = T_Historique_Interventions.ID_Intervention) ON (T_Interventions.ID_Intervention = T_Gestion_interventions.ID_Intervention) AND (T_Gestion_interventions.ID_Intervention = T_Historique_Interventions.ID_Intervention) WHERE (((T_Interventions.En_standby)=No) AND ((T_Interventions.DC)=Yes)) ORDER BY T_Interventions.ID_Secteur, T_Historique_Interventions.Date_derniere_interv DESC;
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Si ta requête s'appelle R_hist, et que tu veux obtenir, pour chaque secteur, les 5 interventions les plus récentes, je suggère ceci:
select * from R_hist as p1
where ID_Intervention in
(select top 5 ID_Intervention from R_hist as p2
where p1.ID_Secteur = p2.ID_Secteur
order by Date_derniere_interv desc)
ORDER BY ID_Secteur, Date_derniere_interv DESC 
0
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2
 
Merci pour ton aide.

J'ai créé cette requête afin d'utiliser ta solution, mais j'en arrive au même résultat. :/



0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
si tu utilises la requête proposée en direct, quel résultat obtiens-tu?
0
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2
 
J'ai du mal à expliquer entre les requêtes qui se trouvent avec les tables, les formulaires etc.. et les requêtes dans le champs sources des données de l'état.

Ma requête initiale, la longue, était dans le champs source. Pour tester ta proposition, j'ai transformé cette requête en "vraie" requête et, dans le champs source de mon état, j'ai mis ta proposition.
Le résultat reste inchangé, j'affiche encore toutes les dates archivées.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Si tu transformes "ma" requête en "vraie" requête, peux-tu tester chacune des requêtes? Renvoient-elles le même nombre de lignes?

Comme tu as partagé très peu d'information, j'ai fait pas mal de suppositions ("tu veux obtenir, pour chaque secteur, les 5 interventions les plus récentes").
Ma requête renvoie-t-elle plus de 5 interventions pas secteur?

Tu as écrit "J'ai fait 3 regroupements". Il est sans doute utile d'expliquer quels champs tu utilises pour cela.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2
 
Non en effet, je n'ai plus le même nombre de ligne.

Est-ce que cette capture peut t'aider:



C'est la ligne "Détail" avec les dates qui se répète autant de fois qu'il y a d'enregistrements dans ma table historique. Normal, mais c'est celle-ci que je voudrais limiter.
0
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2
 
Salut,

J'ai adapté ta solution comme ceci et ça marche:

select * from R_hist as p1
where Date_derniere_interv in
(select top 5 Date_derniere_interv from R_hist as p2
where p1.ID_Secteur = p2.ID_Secteur
order by Date_derniere_interv desc)
ORDER BY ID_Secteur, Date_derniere_interv DESC


Un grand merci à toi pour ta solution et ta patience. :)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
As-tu testé avec plusieurs sous secteurs dans le même secteur, et plusieurs interventions par sous-secteur?
0
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je pensais avoir rectifié mon dernier message, mais je n'ai pas du le valider.
J'expliquais que tout compte fait je n'ai pas toutes les infos.

Je n'ai pas encore compris celles qui manquent. J'ai bien plusieurs secteurs, plusieurs sous secteurs dans certains secteurs e même plusieurs interventions dans certains sous secteurs
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense que dans la clause WHERE, il faut comparer les trois champs participants au regroupement, pas uniquement un seul.
Avec la requête comme elle est pour l'instant, tu obtiens les cinq dates les plus récentes par secteur, alors que tu souhaites sans doute obtenir les cinq dates les plus récentes par combinaison des trois champs regroupés.
0
cs_Stegue Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   2
 
En effet, c'est bien ça. Ca me semble tout bon cette fois-ci. :)

Merciiiiiii.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
parfait, peux-tu alors marquer comme résolu?
0