Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/04/2011, 16h04   #1
Membre habitué
 
Avatar de Alt157
 
Inscription : février 2009
Messages : 143
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2009
Messages : 143
Points : 121
Points : 121
Envoyer un message via MSN à Alt157 Envoyer un message via Yahoo à Alt157 Envoyer un message via Skype™ à Alt157
Par défaut Créer Etat - Clause GROUP-BY multi-niveaux non autorisée dans une sous-requête

Bonjour à tous,

Je suis entrain de créer un état mais j'ai un petit problème lorsque je veux effectuer un regroupement. Le message d'erreur est le suivant : Clause GROUP-BY multi-niveaux non autorisée dans une sous-requête.

Ci-dessous le schéma de la base:
* retraite (N°,prenom, nom, adresse, code_postal, ville, ..., centre)
* cotisation ( annee, retraite) // retraite = identifiant du retraité
* centre(N°, libelle)

Mon état a besoin d'afficher les informations de la personne ainsi que le fait qu'il ait cotisé ou non durant les 4 dernières années.

Ma requête récupère donc ces informations et dans l'état j'ai ajouté la clause GROUP par libelle du centre et depuis j'ai l'erreur citée plus haut.

Ci-dessous ma requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
SELECT nom, prenom, adresse, complement_adresse, code_postal, ville, libelle, (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW())
        ) as annee,
        (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW()) - 1
        ) as annee_moins_1,
        (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW()) - 2
        ) as annee_moins_2,
        (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW()) - 3
        ) as annee_moins_3
    FROM retraite as R inner join centre on R.centre = centre.N°
    ORDER BY libelle, nom, prenom;
Merci par avance pour votre aide,
__________________
Les filles sont comme les noms de domaines : les meilleures sont déjà prises.
Alt157 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2011, 18h21   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
Bonjour,

essaye en glissant un DISTINCT dans la requête :

Code sql :
SELECT DISTINCT nom, prenom, …

Sinon tu peux aussi essayer de remplacer tes sous-requêtes par des appels avec la fonction DLookUp :

Code :
(DLookUp("1","cotisation","[retraite]=" & R.N° & "  AND [Annee]=" & YEAR(NOW()))) AS annee, …
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/05/2011, 09h17   #3
Membre habitué
 
Avatar de Alt157
 
Inscription : février 2009
Messages : 143
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2009
Messages : 143
Points : 121
Points : 121
Envoyer un message via MSN à Alt157 Envoyer un message via Yahoo à Alt157 Envoyer un message via Skype™ à Alt157
Bonjour,

Je viens de tester vos propositions mais rien ne change :

Code :
1
2
3
4
5
6
7
SELECT nom, prenom, adresse, complement_adresse, code_postal, ville, libelle, 
    (DLookUp("1","cotisation","[retraite]=" & R.N° & "  AND [Annee]=" & YEAR(NOW()))) AS annee,
(DLookUp("1","cotisation","[retraite]=" & R.N° & "  AND [Annee]=" & YEAR(NOW()) - 1)) AS annee_moins_1,
(DLookUp("1","cotisation","[retraite]=" & R.N° & "  AND [Annee]=" & YEAR(NOW()) - 2)) AS annee_moins_2,
(DLookUp("1","cotisation","[retraite]=" & R.N° & "  AND [Annee]=" & YEAR(NOW()) - 3)) AS annee_moins_3
FROM retraite AS R INNER JOIN centre ON R.centre=centre.N°
ORDER BY libelle, nom, prenom;
et :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
SELECT distinct nom, prenom, adresse, complement_adresse, code_postal, ville, libelle, (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW())
        ) as annee,
        (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW()) - 1
        ) as annee_moins_1,
        (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW()) - 2
        ) as annee_moins_2,
        (
            SELECT 1
            FROM cotisation
            WHERE retraite = R.N°
            AND annee = YEAR(NOW()) - 3
        ) as annee_moins_3
    FROM retraite as R inner join centre on R.centre = centre.N°
    ORDER BY libelle, nom, prenom;
Merci encore, quelqu'un aurait il une autre idée ?
__________________
Les filles sont comme les noms de domaines : les meilleures sont déjà prises.
Alt157 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 15h04   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
Le coup classique du "pourtantchezmoiçamarche"



Au choix avec le SELECT DISTINCT ou les DLookUp… 
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h30.


 
 
 
 
Partenaires

Hébergement Web