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

Requêtes et SQL. Discussion :

Impossible d'utiliser une requête dans une autre requête [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut Impossible d'utiliser une requête dans une autre requête
    Bonjour,

    J'ai 2 requêtes que je souhaite fusionner mais Access me sort une erreur :
    Vous avez choisi des champs issus de sources d'enregistrement auxquelles l' Assistant ne peut se connecter. Il est possible que vous ayez choisi des champs d'une table et d'une requête basée sur cette table. Si c'est le cas, essayez de choisir des champs venant de la table ou de la requête uniquement.
    Ma req1 est un SELECT de champs de la table ARTICLES : elle contient un SWITCH et aussi un IIF. (elle est sous forme SQL - impossible de la passer en mode graphique car elle dépasse 1024 caractères)

    Ma req2 est un simple SELECT de champs de ma table TARIFS (qui est une table liée à un fichier Excel).


    J'ai essayé de créer cette requête manuellement : Mais lorsque je veux ajouter ma req1 dans la fenêtre du concepteur : elle ne vient pas !!

    Alors je me suis dit "je vais contourner le pb en créant une table depuis ma req1" -> j'ai donc voulu transformé ma requête1 en type "Création de table" mais j'obtiens aussi :
    L'expression entrée dépasse la limite de 1024 caractèrs pour la grile de création
    Savez-vous ce que je peux faire pour obtenir ma requête finale ?

    Merci


    Thib

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 757
    Points : 57 765
    Points
    57 765
    Billets dans le blog
    42
    Par défaut
    bonsoir,

    elle est sous forme SQL - impossible de la passer en mode graphique car elle dépasse 1024 caractères
    bigre ! tu as des noms de tables&champs à rallonge ? Combien de champs dans le SELECT ? Tu as pensé à mettre des alias ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T.champ1, U.champ2
    FROM [nom_de_la_première_table_à_rallonge] T
    INNER JOIN [nom_de_la_deuxième_table_à_rallonge] U
    ON T.clef=U.clef;

    bon, on peut la voir la rasta-requête ? Ou un extrait ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    bonjour,

    voici la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT A.COD_ART, A.DGN, Switch(
    [TARIF1]>[TARIF2] And Format(Now(),"yyyymmdd")>=[TARIF1] And Format(Now(),"yyyymdd")>[TARIF2], [PV1],
    [TARIF1]>[TARIF2] And Format(Now(),"yyyymmdd")<[TARIF1] And Format(Now(),"yyyymmdd")>=[TARIF2],[PV2],
    [TARIF1]>[TARIF2] And Format(Now(),"yyyymmdd")<[TARIF1] And [TARIF2]="0",0,
    [TARIF1]<[TARIF2] And Format(Now(),"yyyymmdd")<[TARIF1] And Format(Now(),"yyyymmdd")<[TARIF2],0,
    [TARIF1]<[TARIF2] And Format(Now(),"yyyymmdd")>=[TARIF1] And Format(Now(),"yyyymmdd")<[TARIF2],[PV1],
    [TARIF1]<[TARIF2] And Format(Now(),"yyyymmdd")>[TARIF1] And Format(Now(),"yyyymmdd")>=[TARIF2],[PV2],
    [TARIF1]<[TARIF2] And [DEB_TRF_1]="0" And Format(Now(),"yyyymmdd")>=[TARIF2],[PV2],
    [TARIF1]<[TARIF2] And [DEB_TRF_1]="0" And Format(Now(),"yyyymmdd")<[TARIF2],0,
    [TARIF1]=[TARIF2] AND Format(Now(),"yyyymmdd")>=[TARIF1] And PV1>PV2,[PV1],
    [TARIF1]=[TARIF2] AND Format(Now(),"yyyymmdd")>=[TARIF1] And PV1<PV2,[PV2],
    [TARIF1]=[TARIF2] AND Format(Now(),"yyyymmdd")>=[TARIF1] And PV1=PV2,[PV2],
    [TARIF1]=[TARIF2] AND Format(Now(),"yyyymmdd")<[TARIF1],0
    ) AS TARIFENCOURS, A.STK_DISPO, A.QTE_ATE, A.DEB_TRF_1 AS TARIF1, A.PRX_VEN_HT_1 AS PV1, A.DEB_TRF_2 AS TARIF2, A.PRX_VEN_HT_2 AS PV2, A.COD_FAM AS CF, A.COD_SOU_FAM AS CSF, A.ACC_SPL, A.LBR_2, A.VENDU_Par, IIf([COD_FAM]="03","ZZZZZZ" & [COD_ART],"_" & [COD_ART]) AS TriFamille, A.[Prix FOB], TARIFS.REFERENCE, TARIFS.TARIF, TARIFS.[PRIX X 1], TARIFS.[PRIX X 2], TARIFS.[PRIX X 3], TARIFS.[PRIX X 4], TARIFS.[PRIX X 6], TARIFS.[PRIX X 8], TARIFS.[PRIX X 12], TARIFS.[PRIX X 15], TARIFS.[PRIX X 30], TARIFS.[PRIX X 40], TARIFS.[PRIX X 60], TARIFS.[PRIX X100], TARIFS.GRP, TARIFS.[club Prix], TARIFS.[club TRUITE], TARIFS.[club CARPE], TARIFS.[club CARNA], TARIFS.[club LEURRE], TARIFS.[club CAST], TARIFS.[club SURF], TARIFS.[club VIDE1], TARIFS.[club VIDE2], TARIFS.[club VIDE3], TARIFS.[club VIDE4]
    FROM dbo_ARTICLES AS A INNER JOIN TARIFS ON A.COD_ART = TARIFS.REFERENCE
    ORDER BY IIf([COD_FAM]="03","ZZZZZZ" & [COD_ART],"_" & [COD_ART]);
    c'est grâve Docteur ??

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 757
    Points : 57 765
    Points
    57 765
    Billets dans le blog
    42
    Par défaut
    bonjour,

    tu peux déjà mettre tout le traitement Switch(...) dans une fonction VBA:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT A.COD_ART, A.DGN, CalculTarifEncours(A.COD_ART) as TARIFENCOURS,...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut
    Merci, je ne savais pas que l'on pouvait faire cela

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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