IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

"TOUS" en haut d'une zone de liste et Erreur de Syntaxe dans l'opération Join


Sujet :

Access

  1. #1
    Membre du Club Avatar de popoliline
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut "TOUS" en haut d'une zone de liste et Erreur de Syntaxe dans l'opération Join
    Bonjour,
    Je vous expose la situation, je dispose de 3 tables:
    · 131_Variete_Casier_Cycle (champ: Id_Casier, Id_Cycle (c'est une table de jointure))
    · 133_Cycle (champs: Id_Cycle (clef primaire format texte)
    · 13_Casier (champs: Id_Parc (numérique entier long)

    donc j'ai fait un formulaire avec 2 zones de liste (lstCycle et lstParc) qui me permettent de choisir d'abord le Cycle puis les parcelles (j'effectue un filtre, je ne sélectionne que les parcelles présentent sur le cycle sélectionné dans la 1ère zone de liste, là tout fonctionne)
    J'utilise ensuite cette sélection pour afficher un état basé uniquement sur la sélection du cycle et de la parcelle.

    Il se trouve que je voudrais avoir la possibilité de vois sur l'état toutes les parcelles du cycle sélectionné donc j'ai essayé d'ajouter "Tous" en haut de ma liste (utilisation du code de la FAQ).
    Pour la lstCyle,
    J'insère le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [133_Cycle].[Id_Cycle] FROM (Select [133_Cycle].[Id_Cycle],1 As Position From 133_Cycle Union
     
    Select TOP 1 "-Tous-",0 From 133_Cycle) GROUP BY [133_Cycle].[Id_Cycle] ORDER BY [133_Cycle].[Id_Cycle] DESC;
    Et dès que je vais voir s'il fonctionne, le SQL change je ne sais trop comment et me donne celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [133_Cycle].[Id_Cycle] FROM [Select [133_Cycle]].[[Id_Cycle],1 As Position From 133_Cycle Union  Select TOP 1 "-Tous-",0 
    From 133_Cycle] AS [%$##@_Alias] GROUP BY [133_Cycle].[Id_Cycle] ORDER BY [133_Cycle].[Id_Cycle] DESC;
    Erreur: mise en crochet non valide
    J'ai beau le changer, rien à faire, le code ci-dessus revient toujours


    Ensuite, je veux faire pareil sur ma lstParc, j'utilise le code suivant (inséré sur Contenu de ma liste):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [13_Casier].[Id_Parc], [131_Variete_Casier_Cycle].[Id_Cycle] FROM (Select [13_Casier].[Id_Parc] ,1 As Position From 13_Casier Union 
     
    Select TOP 1 "-Tous-",0 From 13_Casier) INNER JOIN 131_Variete_Casier_Cycle ON [13_Casier].[Id_Casier]=[131_Variete_Casier_Cycle].[Id_Casier] GROUP BY [13_Casier].[Id_Parc], [131_Variete_Casier_Cycle].[Id_Cycle] 
    HAVING ((([131_Variete_Casier_Cycle].Id_Cycle)=[forms]![Z_essai_liste de sélection]![lstCycle]));

    Là j'ai un message d'erreur : Erreur de Syntaxe dans l'opération Join
    Donc je ne vois pas comment résoudre cela, est ce que c'est parce que j'ai un déjà un filtre sur ma zone de liste ?
    Avant de modifier mon SQL, j'utilisai celui-ci (tout fonctionnait très bien)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [13_Casier].[Id_Parc], [131_Variete_Casier_Cycle].[Id_Cycle] FROM 13_Casier INNER JOIN 131_Variete_Casier_Cycle ON [13_Casier].[Id_Casier]=[131_Variete_Casier_Cycle].[Id_Casier] GROUP BY [13_Casier].[Id_Parc], 
    [131_Variete_Casier_Cycle].[Id_Cycle] HAVING ((([131_Variete_Casier_Cycle].Id_Cycle)=[forms]![Z_essai_liste de sélection]![lstCycle]));

    Voilà, donc si quelqu'un pouvait me donner quelques indices ou pouvait me proposer une autre solution pour insérer le "Tous" en haut d'une zone de liste….je ne dis pas non
    Pauline

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Pour la sous-requête UNION il faut que les noms de colonnes soient les mêmes.
    De plus il faut donner un nom à la sous-requête.

    Essaie ceci pour la première requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT sq133_Cycle.[Id_Cycle], sq133_Cycle.Position
    FROM [Select [133_Cycle].[Id_Cycle], 1 As Position From 133_Cycle
          UNION
          Select TOP 1 "-Tous-" As Id_Cycle, 0 As Position From 133_Cycle]. As sq133_Cycle
    GROUP BY sq133_Cycle.[Id_Cycle] 
    ORDER BY sq133_Cycle.Position , sq133_Cycle.[Id_Cycle] DESC;
    Access transforme les parenthèses de sous-requête en crochets droits, le dernier étant suivit d'un point.

    A+

  3. #3
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    juste une petite correction.
    Dans une requête union, seul le premier nom (celui de la première clause select) est important.
    Ce qui est indispensable, dans une requête union, c'est que les colonnes soient dans le même ordre et qu'elles soient en même quantité dans chaque clause select

    Ainsi, cet exemple est tout à fait valide, et renverra 2 colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Select Champ1 as Montest, Champ2 as MonAutreTest
        From MaTable1
    UNION
    Select Champ3, Champ4
        From MaTable2
    UNION 
    Select Champ5, "oups"
        From MaTable3

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Ahhh d'accord.
    Je m'embête pour rien depuis longtemps dans ce cas.
    Bon, allez. Pas pour rien. C'est un peu plus lisible.

  5. #5
    Membre du Club Avatar de popoliline
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    bonjour,
    en fait, aprés avoir chercher et n'ayant rien trouvé, je me suis débrouillé autrement, (faute de grive, on mange du merle )
    comme je voulais avoir 2 états, (un qui me présentait les coût pas cycle et l'autre par parcelle) j'ai créer 2 boutons et deux états

    sinon, ma question pour "Tous" se pose toujours,
    pour avoir inscrit "Tous" en haut de la liste, c'est bon, j'ai le code de la FAQ, mais comment faire pour avoir un état qui tienne compte du fait que l'on ait sélectionner "Tous" (donc qui présente toutes les infos...) ?
    me suis-je bien fait comprendre ??

    merci d'avance pour vos réponses,
    je garde quand même vos solutions sous le coude,merci
    Pauline

  6. #6
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    simple ...


    Fais comme cela :
    Select [133_Cycle].[Id_Cycle], [133_Cycle].[Id_Cycle], 1 As Position
    From 133_Cycle
    UNION
    Select TOP 1 "-Tous-" As Id_Cycle, 0 As Position From 133_Cycle

  7. #7
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    simple ...


    Fais comme cela :
    Select [133_Cycle].[Id_Cycle], [133_Cycle].[Id_Cycle], 1 As Position
    From 133_Cycle
    UNION
    Select TOP 1 "-Tous-" As Id_Cycle, 0 As Position From 133_Cycle

  8. #8
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    simple ...


    Fais comme cela :
    Select [133_Cycle].[Id_Cycle], [133_Cycle].[Id_Cycle], 1 As Position
    From 133_Cycle
    UNION
    Select TOP 1 "-Tous-" As Id_Cycle, 0 As Position From 133_Cycle

  9. #9
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    simple ...


    Fais comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Select [Id_Cycle], [Id_Cycle], 1 As Position 
        From 133_Cycle
    UNION
    Select TOP 1 '*',"-Tous-" , 0 
        From 133_Cycle
    ORDER BY Position, ID_Cycle
    Tu auras ainsi 3 colonnes
    *---Tous---0
    1----1-----1
    2----2-----1
    3----3-----1
    ...

    Dans ta liste, tu déclares :
    Nbre colonnes : 3
    Colonne liée : 1
    Largeurs colonnes : 0;;0

    Ensuite, dans ta requête, ton critère donnera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Comme "'" & lien vers ta liste & "'"
    Et puis c'est tout


Discussions similaires

  1. [SP-2010] Afficher tous les enregistrements d'une zone de liste déroulante
    Par fabaccess dans le forum SharePoint
    Réponses: 1
    Dernier message: 21/12/2011, 10h23
  2. Réponses: 5
    Dernier message: 18/11/2009, 11h25
  3. Selection de tous les enregistrements d'une zone de liste
    Par Renardo dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/11/2007, 20h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo