Problème Filtrer sous-formulaire et instruction SQL

3 réponses
Avatar
BV
Bonjour =E0 tous
J'ai un formulaire principal avec 2 sous-formulaires
L'id=E9e c'est que lorsque je double-clique sur une occurrence du SF1
il me filtre le SF2 en r=E9cup=E9rant la variable. Ca marche !
Sauf que je voudrais dans mon instruction SQL rajouter GROUP BY
et c'est l=E0 que =E7a plante.

Code qui marche :
Forms![F_DETAIL SALARIE]![SF_DetailAct].Form.RecordSource =3D "SELECT ID_SA=
LARIE, METIER, NOM_ACTIVITE FROM R_DETAILSAL WHERE METIER=3D[Formulaires]![=
F_Detail salarie]![SF_DetailMetier].[Form]![Metier]"

Code qui ne marche pas :
Forms![F_DETAIL SALARIE]![SF_DetailAct].Form.RecordSource =3D "SELECT ID_SA=
LARIE, METIER, NOM_ACTIVITE FROM R_DETAILSAL WHERE METIER=3D[Formulaires]![=
F_Detail salarie]![SF_DetailMetier].[Form]![Metier] GROUP BY Metier"

message d'erreur :"erreur de syntaxe(op=E9rateur absent)dans l'expression .=
..
Merci beaucoup pour vos indications et votre aide pr=E9cieuse

BV

3 réponses

Avatar
db
Le 06/05/2013 17:58, BV a écrit :
Bonjour à tous
J'ai un formulaire principal avec 2 sous-formulaires
L'idée c'est que lorsque je double-clique sur une occurrence du SF1
il me filtre le SF2 en récupérant la variable. Ca marche !
Sauf que je voudrais dans mon instruction SQL rajouter GROUP BY
et c'est là que ça plante.

Code qui marche :
Forms![F_DETAIL SALARIE]![SF_DetailAct].Form.RecordSource = "SELECT ID_SALARIE, METIER, NOM_ACTIVITE FROM R_DETAILSAL WHERE METIER=[Formulaires]![F_Detail salarie]![SF_DetailMetier].[Form]![Metier]"

Code qui ne marche pas :
Forms![F_DETAIL SALARIE]![SF_DetailAct].Form.RecordSource = "SELECT ID_SALARIE, METIER, NOM_ACTIVITE FROM R_DETAILSAL WHERE METIER=[Formulaires]![F_Detail salarie]![SF_DetailMetier].[Form]![Metier] GROUP BY Metier"

message d'erreur :"erreur de syntaxe(opérateur absent)dans l'expression ....



Bonsoir,

L'instruction GROUP BY ne se justifie que s'il y a une fonction
d'agrégation (sum, count, avg, min, max) dans le SELECT, ce qui n'est
pas le cas dans votre SQL.

Peut-être est-ce ORDER BY METIER que vous souhaitez mettre ?

Ou alors, précisez-nous ce que vous souhaitez obtenir.

db
Avatar
BV
Le lundi 6 mai 2013 18:12:32 UTC+2, db a écrit :
Le 06/05/2013 17:58, BV a �crit :

> Bonjour � tous

> J'ai un formulaire principal avec 2 sous-formulaires

> L'id�e c'est que lorsque je double-clique sur une occurrence du SF1

> il me filtre le SF2 en r�cup�rant la variable. Ca march e !

> Sauf que je voudrais dans mon instruction SQL rajouter GROUP BY

> et c'est l� que �a plante.

>

> Code qui marche :

> Forms![F_DETAIL SALARIE]![SF_DetailAct].Form.RecordSource = "SELECT I D_SALARIE, METIER, NOM_ACTIVITE FROM R_DETAILSAL WHERE METIER=[Formulaire s]![F_Detail salarie]![SF_DetailMetier].[Form]![Metier]"

>

> Code qui ne marche pas :

> Forms![F_DETAIL SALARIE]![SF_DetailAct].Form.RecordSource = "SELECT I D_SALARIE, METIER, NOM_ACTIVITE FROM R_DETAILSAL WHERE METIER=[Formulaire s]![F_Detail salarie]![SF_DetailMetier].[Form]![Metier] GROUP BY Metier"

>

> message d'erreur :"erreur de syntaxe(op�rateur absent)dans l'ex pression ....



Bonsoir,



L'instruction GROUP BY ne se justifie que s'il y a une fonction

d'agr�gation (sum, count, avg, min, max) dans le SELECT, ce qui n 'est

pas le cas dans votre SQL.



Peut-�tre est-ce ORDER BY METIER que vous souhaitez mettre ?



Ou alors, pr�cisez-nous ce que vous souhaitez obtenir.



db



je souhaiterai en fait juste regrouper sur un niveau sans faire de calcul
le requêteur d'access me permet de le faire
peut être qu'en faisant un count sur un champ sans le faire apparaître celà pourrait marcher
merci beaucoup pour cette indication
Avatar
db
Le 07/05/2013 09:07, BV a écrit :


je souhaiterai en fait juste regrouper sur un niveau sans faire de calcul
le requêteur d'access me permet de le faire
peut être qu'en faisant un count sur un champ sans le faire apparaître celà pourrait marcher
merci beaucoup pour cette indication



Si vous tenez à mettre GROUP BY, il est obligatoire de mettre tous les
champs qui sont dans la clause SELECT (hormis les calculs) :

SELECT ID_SALARIE, METIER, NOM_ACTIVITE FROM R_DETAILSAL WHERE
METIER=[Formulaires]![F_Detail
salarie]![SF_DetailMetier].[Form]![Metier] GROUP BY ID_SALARIE, METIER,
NOM_ACTIVITE

…mais, encore une fois, le group by ne se justifie que s'il y a un
calcul à faire sur le regroupement. Dans votre cas, il n'apportera rien
à la requête.

db