ACCESS 2013: Limiter l'affichage dans un état

Résolu/Fermé
cs_Stegue Messages postés 45 Date d'inscription dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 - 27 déc. 2021 à 12:07
yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 - 29 déc. 2021 à 13:29
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 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 Ambassadeur 1 533
27 déc. 2021 à 16:55
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 dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2
27 déc. 2021 à 18:51
Merci, mais ma requête est trop complexe pour moi pour faire cette modif.
0
yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533
27 déc. 2021 à 19:03
peux-tu partager la syntaxe SQL de la requête source de l'état?
0
cs_Stegue Messages postés 45 Date d'inscription dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2 > yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024
28 déc. 2021 à 08:23
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 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533 > cs_Stegue Messages postés 45 Date d'inscription dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024
28 déc. 2021 à 08:45
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 dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2
28 déc. 2021 à 16:26
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 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533
28 déc. 2021 à 16:27
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 dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2
Modifié le 28 déc. 2021 à 17:38
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 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533
28 déc. 2021 à 17:48
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 dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2
28 déc. 2021 à 18:29
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 dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2
29 déc. 2021 à 07:42
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 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533
29 déc. 2021 à 09:27
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 dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2 > yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024
29 déc. 2021 à 11:02
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 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533 > cs_Stegue Messages postés 45 Date d'inscription dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024
29 déc. 2021 à 11:24
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 dimanche 4 septembre 2005 Statut Membre Dernière intervention 9 mars 2024 2
Modifié le 29 déc. 2021 à 12:03
En effet, c'est bien ça. Ca me semble tout bon cette fois-ci. :)

Merciiiiiii.
0
yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533
29 déc. 2021 à 13:29
parfait, peux-tu alors marquer comme résolu?
0