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 :

Code SQL de mes requêtes coupées par ACCESS 2003


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Code SQL de mes requêtes coupées par ACCESS 2003
    Bonjour,

    Je développe sous ACCESS 2003 et j'écris des requêtes ACCESS en mode SQL (j'utilise pas l'assistant de création de requêtes).
    Voici une des requêtes que j'ai écrite et que j'ai enregistrée dans ACCESS 2003 sous le nom suivant RQ_UNION_ESSBASE_Clients :

    Code SQL : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    INSERT INTO UNION_ESSBASE_Clients (Entite,Metier,LibelleRubrique,Bn,Rn,Pn,Bn1,Bn_negatif,Rn_negatif,
    Pn_negatif,Bn1_negatif)
    SELECT [00_Regroupement_Entite].Regroupement_Entite,[00_Correspondance_Metiers_r3].r3,Rubrique, sum(Bn), Sum(Rn), Sum(Pn), Sum(Bn1),
    Sum(Bn_negatif), Sum(Rn_negatif),
    Sum(Pn_negatif), Sum(Bn1_negatif)
    FROM ((
           SELECT Entite,Metier,Rubrique, sum(Montant) as Bn, 0 as Rn, 0 as Pn, 0 as Bn1, -(sum(Montant)) as Bn_negatif,
           0 as Rn_negatif, 0 as Pn_negatif, 0 as Bn1_negatif
           FROM Bn_ESSBASE_FactCli_csv
           GROUP BY  Entite,Metier,Rubrique,0,0,0,0,0
           UNION
           SELECT Entite,Metier,Rubrique, 0 as Bn, sum(Montant) as Rn, 0 as Pn, 0 as Bn1, 0 as Bn_negatif,
           -(sum(Montant)) as Rn_negatif, 0 as Pn_negatif, 0 as Bn1_negatif
           FROM Rn_ESSBASE_FactCli_csv
           GROUP BY  Entite,Metier,Rubrique,0,0,0,0,0
           UNION
           SELECT Entite,Metier,Rubrique, 0 as Bn, 0 as Rn, sum(Montant) as Pn, 0 as Bn1, 0 as Bn_negatif,
           0 as Rn_negatif, -(sum(Montant)) as Pn_negatif, 0 as Bn1_negatif
           FROM Pn_ESSBASE_FactCli_csv
           GROUP BY  Entite,Metier,Rubrique,0,0,0,0,0
           UNION
           SELECT Entite,Metier,Rubrique, 0 as Bn, 0 as Rn, 0 as Pn, sum(Montant) as Bn1, 0 as Bn_negatif,
           0 as Rn_negatif, 0 as Pn_negatif, -(sum(Montant)) as Bn1_negatif
           FROM Bn1_ESSBASE_FactCli_csv
           GROUP BY  Entite,Metier,Rubrique,0,0,0,0,0
    ) A, 00_Correspondance_Metiers_r3,  00_Regroupement_Entite
    WHERE (A.Metier = [00_Correspondance_Metiers_r3].Metier)
    AND 00_Regroupement_Entite ON A.Entite = [00_Regroupement_Entite].Entite)
    GROUP BY [00_Regroupement_Entite].Regroupement_Entite, [00_Correspondance_Metiers_r3].r3, A.Rubrique;

    Cette requête est courte par rapport à d'autres que j'ai écrite.
    Mon problème est le suivant :
    1) J'insère le code SQL ci-dessus dans la partie [SQL View] de ma requête ACCES nommée RQ_UNION_ESSBASE_Clients .
    2) Quand je clique sur le bouton "!" (exécter), la requête s'exécute correctement.
    3) Du coup j'enregistre ma requête.
    4) Mais quand je retourne dans ma base de données ACCESS 2003 et que je double-clique sur ma requête nommée RQ_UNION_ESSBASE_Clients, ACCESS me génère l'erreur suivante :
    "The Microsoft Jet database engine cannot find the input table or query SELECT Entite,Metier,Rubrique, sum(Montant) as Bn, 0 as Rn, 0 as Pn, 0 as Bn1, -(sum(Montant)) as Bn_negatif, 0 as Rn_negatif, 0 as Pn_negatif, 0 as Bn1_negatif FROM Bn_ESSBASE_FactCli_csv GROUP BY Entite,Metier,Rubrique,0,0,0,0,0.
    Make sure if exists and that its name is spelled correctly'.
    Et quand j'ouvre la requête en mode SQL view, ma requête initiale est coupée comme ci-dessous :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    INSERT INTO UNION_ESSBASE_Clients (Entite,Metier,LibelleRubrique,Bn,Rn,Pn,Bn1,Bn_negatif,Rn_negatif,
    Pn_negatif,Bn1_negatif)
    SELECT [00_Regroupement_Entite].Regroupement_Entite,[00_Correspondance_Metiers_r3].r3,Rubrique, sum(Bn), Sum(Rn), Sum(Pn), Sum(Bn1),
    Sum(Bn_negatif), Sum(Rn_negatif),
    Sum(Pn_negatif), Sum(Bn1_negatif)
    FROM ([
           SELECT Entite,Metier,Rubrique, sum(Montant) as Bn, 0 as Rn, 0 as Pn, 0 as Bn1, -(sum(Montant)) as Bn_negatif,
           0 as Rn_negatif, 0 as Pn_negatif, 0 as Bn1_negatif
           FROM Bn_ESSBASE_FactCli_csv
           GROUP BY  Entite,Metier,Rubrique,0,0,0,0,] as A, 00_Correspondance_Metiers_r3,  00_Regroupement_Entite
    WHERE (A.Metier = [00_Correspondance_Metiers_r3].Metier)
    AND 00_Regroupement_Entite ON A.Entite = [00_Regroupement_Entite].Entite)
    GROUP BY [00_Regroupement_Entite].Regroupement_Entite, [00_Correspondance_Metiers_r3].r3, A.Rubrique;

    Avez-vous une solutions à mon problème car à priori ACCESS n'aime pas trop que l'on crée les requêtes en tapant directement du SQL !

    Merci d'avance.

    boubou_s

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    C'est illisible tout ca et de plus assez compliqué. Plusieurs requêtes imbriquées, Select, Union et Insert !

    Utilises les balise Code pour organiser mieux, et explique ce que tu veux faire.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    En fait je fait un
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT * FROM (
         SELECT a from table 1
         UNION
         SELECT a from table 2
         UNION
         SELECT a from table 3
         UNION ....
    ) as A
    INNER JOIN [Table 4]
    ON A.a = [Table 4].a;

    Et en fait ACCESS me coupe automatiquement la partie :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT a from table 1
         UNION
         SELECT a from table 2
         UNION
         SELECT a from table 3
         UNION ....
    Quand j'enregistre ma requête.

    Je crois avoir trouvé la solution : Créer une requête de type UNION (nommée RQ_UNION) pour la partie
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT a from table 1
         UNION
         SELECT a from table 2
         UNION
         SELECT a from table 3
         UNION ....

    Et du coup ma requête finale donnerait :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM RQ_UNION as A
    INNER JOIN [Table 4]
    ON A.a = [Table 4].a;

    J'ait testé et ça fonctionne bien et ACCESS ne me coupe plus mon code SQL.
    Mais c'est énervant de faire deux requêtes alors que je pourrai tout faire en une seule requête. ....
    Si vous avez d'aures solutions, je suis preneuse.

    Merci

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    C'est parceque c'est certainement trop long que c'est coupé. Avec toutes tes requêtes UNION, j'ai l'impression que tu as un problème de conception.

    En tout cas pour tes messages, regarde ici http://www.developpez.net/forums/showthread.php?t=15414 comment bien les organiser.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pour une requête tu as droit à 64000 caractères de sql
    ce n'est pas la longueur qui pèche

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/02/2013, 00h15
  2. Erreur dans le code SQL de la requête
    Par FreeDo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/04/2011, 14h41
  3. [ACCESS] Affichage du code SQL d'une requête
    Par cyrille_ dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/07/2008, 20h22
  4. modifier le code SQL d'une requête
    Par modus57 dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/05/2008, 16h09
  5. Réponses: 2
    Dernier message: 05/07/2007, 21h11

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