Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mettre à jour des enregistrement dans une requête d'agrégat

3 réponses
Avatar
Michel Michel
[Access 2003 - FR, Win XP FR]

Bonjour !

Je me creuse la t=EAte sur un probl=E8me tout b=EAte.. J'ai une table
T_Commentaire :

IDClient - DateCom - Commentaire
1 1.8.10 T=E9l=E9phone
1 3.8.10 Rappel
2 3.8.10 Envoi de lettre
2 7.8.10 Envoi E-Mail
2 7.8.10 Envoi 2=E8me mail

Maintenant, j'aimerais obtenir un tableau r=E9capitulant les =E9v=E9nements
les plus r=E9cents pour chaque client, comme ceci :

IDClient - DateCom - Commentaire
1 3.8.10 Rappel
2 7.8.10 Envoi mail
2 7.8.10 Envoi 2=E8me mail

J'y arrive tr=E8s bien en utilisant une premi=E8re requ=EAte d'agr=E9gation=
,
avec la fonction MAX (Afin de d=E9terminer les commentaires les plus
r=E9cents) :

SELECT T_Commentaire.IDClient, Max(T_Commentaire.DateCom) AS
MaxDeDateCom
FROM T_Commentaire
GROUP BY T_Commentaire.IDClient;

Et en faisant une deuxi=E8me requ=EAte par dessus cette premi=E8re requ=EAt=
e
que j'ai appel=E9 R_MaxCom (Afin d'avoir la liste des commentaires) :

SELECT R_MaxCom.IDClient, T_Commentaire.DateCom,
T_Commentaire.Commentaire
FROM R_MaxCom INNER JOIN T_Commentaire ON (R_MaxCom.IDClient =3D
T_Commentaire.IDClient) AND (R_MaxCom.MaxDeDateCommentaire =3D
T_Commentaire.DateCommentaire);

Alors =E7a fonctionne tr=E8s bien sauf que j'aimerais pouvoir mettre =E0
jour le champ commentaire de cette requ=EAte... Elle reste en lecture
seule... J'ai m=EAme mis la propri=E9t=E9 de la requ=EAte "Type RecordSet" =
=E0
"Feuille r=E9p.dyn.(MAJ globale)", mais =E7a ne marche pas non plus...

Qui =E0 une id=E9e ? Merci d'avance !!!

3 réponses

Avatar
Michel__D
Bonjour,

Michel Michel a écrit :
[Access 2003 - FR, Win XP FR]

Bonjour !

Je me creuse la tête sur un problème tout bête.. J'ai une table
T_Commentaire :

IDClient - DateCom - Commentaire
1 1.8.10 Téléphone
1 3.8.10 Rappel
2 3.8.10 Envoi de lettre
2 7.8.10 Envoi E-Mail
2 7.8.10 Envoi 2ème mail

Maintenant, j'aimerais obtenir un tableau récapitulant les événements
les plus récents pour chaque client, comme ceci :

IDClient - DateCom - Commentaire
1 3.8.10 Rappel
2 7.8.10 Envoi mail
2 7.8.10 Envoi 2ème mail

J'y arrive très bien en utilisant une première requête d'agrégation,
avec la fonction MAX (Afin de déterminer les commentaires les plus
récents) :

SELECT T_Commentaire.IDClient, Max(T_Commentaire.DateCom) AS
MaxDeDateCom
FROM T_Commentaire
GROUP BY T_Commentaire.IDClient;

Et en faisant une deuxième requête par dessus cette première requête
que j'ai appelé R_MaxCom (Afin d'avoir la liste des commentaires) :

SELECT R_MaxCom.IDClient, T_Commentaire.DateCom,
T_Commentaire.Commentaire
FROM R_MaxCom INNER JOIN T_Commentaire ON (R_MaxCom.IDClient > T_Commentaire.IDClient) AND (R_MaxCom.MaxDeDateCommentaire > T_Commentaire.DateCommentaire);

Alors ça fonctionne très bien sauf que j'aimerais pouvoir mettre à
jour le champ commentaire de cette requête... Elle reste en lecture
seule... J'ai même mis la propriété de la requête "Type RecordSet" à
"Feuille rép.dyn.(MAJ globale)", mais ça ne marche pas non plus...

Qui à une idée ? Merci d'avance !!!




Essaye avec ceci :

SELECT T.IDClient, T.DateCom, T.Commentaire
FROM T_Commentaire AS T
WHERE T.DateCom In (
SELECT TOP 1 DateCom FROM T_Commentaire WHERE IDClient=T.IDClient ORDER BY DateCom DESC);
Avatar
Michel Michel
Essaye avec ceci :
SELECT T.IDClient, T.DateCom, T.Commentaire
FROM T_Commentaire AS T
WHERE T.DateCom In (
  SELECT TOP 1 DateCom FROM T_Commentaire WHERE IDClient=T.IDClient O RDER BY DateCom DESC);



Ca marche ! Ca
maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarche ! !!!
Merci mille fois !!!!
Avatar
Michel__D
Bonjour,

Michel Michel a écrit :
Essaye avec ceci :
SELECT T.IDClient, T.DateCom, T.Commentaire
FROM T_Commentaire AS T
WHERE T.DateCom In (
SELECT TOP 1 DateCom FROM T_Commentaire WHERE IDClient=T.IDClient ORDER BY DateCom DESC);



Ca marche ! Ca
maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarche !!!!
Merci mille fois !!!!



Mouais, comme quoi même ce qui n'est pas indiqué est possible ...