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 :

[[VBA-E] Différence de requete Access-Excel


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Par défaut [[VBA-E] Différence de requete Access-Excel
    Bonjour,

    j'ai une requete sous Access qui marche très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCTROW Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu
    FROM ((Clients INNER JOIN (Nomenclatures INNER JOIN [OF] ON Nomenclatures.Codeof = OF.Codeof) ON Clients.N°client = OF.N°client) INNER JOIN ((((Sortie RIGHT JOIN ((Articles RIGHT JOIN Nomenlignes ON Articles.N°art = Nomenlignes.N°art) LEFT JOIN Tempappro ON Nomenlignes.N°nomenligne = Tempappro.N°nomenligne) ON Sortie.N°nomligne = Nomenlignes.N°nomenligne) LEFT JOIN Commande ON Tempappro.N°Commande = Commande.N°commande) LEFT JOIN Fournisseurs ON Commande.N°four = Fournisseurs.N°four) LEFT JOIN Réception ON Commande.N°commande = Réception.N°Commande) ON Nomenclatures.N°nomen = Nomenlignes.N°nomen) LEFT JOIN (DA LEFT JOIN Affectation ON DA.N°DA = Affectation.N°DA) ON Nomenlignes.N°nomenligne = DA.N°nomenligne
    GROUP BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu, Nomenclatures.Fichier, Nomenclatures.N°nomen, Clients.Nom, Clients.Sigleclient
    HAVING (((Nomenclatures.N°nomen)=65247))
    ORDER BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl;
    Je l'ai inseré sous Escel via ADODB Recordset mais ça mets une erreur de requetage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ApproSQL10 = "SELECT DISTINCTROW Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu" & _
                        "FROM ((Clients INNER JOIN (Nomenclatures INNER JOIN [OF] ON Nomenclatures.Codeof = OF.Codeof) ON Clients.N°client = OF.N°client) INNER JOIN ((((Sortie RIGHT JOIN ((Articles RIGHT JOIN Nomenlignes ON Articles.N°art = Nomenlignes.N°art) LEFT JOIN Tempappro ON Nomenlignes.N°nomenligne = Tempappro.N°nomenligne) ON Sortie.N°nomligne = Nomenlignes.N°nomenligne) LEFT JOIN Commande ON Tempappro.N°Commande = Commande.N°commande) LEFT JOIN Fournisseurs ON Commande.N°four = Fournisseurs.N°four) LEFT JOIN Réception ON Commande.N°commande = Réception.N°Commande) ON Nomenclatures.N°nomen = Nomenlignes.N°nomen) LEFT JOIN (DA LEFT JOIN Affectation ON DA.N°DA = Affectation.N°DA) ON Nomenlignes.N°nomenligne = DA.N°nomenligne" & _
                        "GROUP BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu, Nomenclatures.Fichier, Nomenclatures.N°nomen, Clients.Nom, Clients.Sigleclient" & _
                        "ORDER BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl"
    Quelqu'un a une idée ?

    Merci d'avance à tous

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour,

    Je n'ai pas tout lu, mais je crois qu'il manque déjà un espace devant FROM, et GROUP BY, HAVING, ...

    Bon courage,

    PGZ

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ApproSQL10 = "SELECT DISTINCTROW Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu" & _
            " FROM ((Clients INNER JOIN (Nomenclatures INNER JOIN [OF] ON Nomenclatures.Codeof = OF.Codeof) ON Clients.N°client = OF.N°client) INNER JOIN ((((Sortie RIGHT JOIN ((Articles RIGHT JOIN Nomenlignes ON Articles.N°art = Nomenlignes.N°art) LEFT JOIN Tempappro ON Nomenlignes.N°nomenligne = Tempappro.N°nomenligne) ON Sortie.N°nomligne = Nomenlignes.N°nomenligne) LEFT JOIN Commande ON Tempappro.N°Commande = Commande.N°commande) LEFT JOIN Fournisseurs ON Commande.N°four = Fournisseurs.N°four) LEFT JOIN Réception ON Commande.N°commande = Réception.N°Commande) ON Nomenclatures.N°nomen = Nomenlignes.N°nomen) LEFT JOIN (DA LEFT JOIN Affectation ON DA.N°DA = Affectation.N°DA) ON Nomenlignes.N°nomenligne = DA.N°nomenligne " & _
            " GROUP BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu, Nomenclatures.Fichier, Nomenclatures.N°nomen, Clients.Nom, Clients.Sigleclient" & _
            " HAVING (((Nomenclatures.N°nomen) = [Numero de la nomenclature  analysée]))" & _
            " ORDER BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl"
    J'ai modifier mais toujours rien zut
    Merci quand même

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Pour les requêtes et les tables éviter absolument les accents dans les noms sinon pour accéder nomdetable->champs déclarer [mattable.champsdéclaré]

    Pour la déclaration de requête utiliser des concaténations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim sSQL As String
    sSQL="SELECT table1.champs,table2.champs,table3.champs"
    sSQL=sSQL & "WHERE...." 'etc

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Par défaut
    Je voudrais bien sans accent mais je tape dans une base qui n'est pas à moi, c'est une vieille base access. Bon je vais concatenaner et je vous tiens au courant si quelqu'un a d'autres idées ?
    Merci

    Edit : Voilà avec concaténation, mais toujours le même problème, quelqu'un a une idée ça doit étre mon code SQL sous access qui devrait étre différent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ApproSQL10 = "SELECT DISTINCTROW Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu" & _
    ApproSQL10 = ApproSQL10 & " FROM ((Clients INNER JOIN (Nomenclatures INNER JOIN [OF] ON Nomenclatures.Codeof = OF.Codeof) ON Clients.N°client = OF.N°client) INNER JOIN ((((Sortie RIGHT JOIN ((Articles RIGHT JOIN Nomenlignes ON Articles.N°art = Nomenlignes.N°art) LEFT JOIN Tempappro ON Nomenlignes.N°nomenligne = Tempappro.N°nomenligne) ON Sortie.N°nomligne = Nomenlignes.N°nomenligne) LEFT JOIN Commande ON Tempappro.N°Commande = Commande.N°commande) LEFT JOIN Fournisseurs ON Commande.N°four = Fournisseurs.N°four) LEFT JOIN Réception ON Commande.N°commande = Réception.N°Commande) ON Nomenclatures.N°nomen = Nomenlignes.N°nomen) LEFT JOIN (DA LEFT JOIN Affectation ON DA.N°DA = Affectation.N°DA) ON Nomenlignes.N°nomenligne = DA.N°nomenligne " & _
    ApproSQL10 = ApproSQL10 & " GROUP BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl, Nomenlignes.Ligne, Articles.Codeart, Articles.Désignation, Tempappro.N°Commande, DA.Date, Commande.Date, Tempappro.datedispo, Tempappro.N°Commande, Nomenlignes.Qténl, Tempappro.[Qté Commandé], Tempappro.QtéDA, Tempappro.QtéRE, Tempappro.N°RE, Affectation.[Qté Affectée], Sortie.[Qté sortie], Tempappro.QtéReçu, Nomenclatures.Fichier, Nomenclatures.N°nomen, Clients.Nom, Clients.Sigleclient" & _
    ApproSQL10 = ApproSQL10 & " HAVING (((Nomenclatures.N°nomen) = [Numero de la nomenclature  analysée]))" & _
    ApproSQL10 = ApproSQL10 & " ORDER BY Nomenlignes.Repèreplnl, Nomenlignes.Réfdétailnl"

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Par défaut
    Bon aprés plusieurs essai, je suis maintenant sur que ça vient du la requete SQL, quelqu'un pourrait jeter un coup d'oeil vote fais, une commande ou une liaison doit étre mal ecrite.

    J'ai un moyen de vérifier par étape ma requete SQL ?

Discussions similaires

  1. Erreur code VBA lors d'un transfert Access Excel
    Par marion1857 dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/05/2013, 07h27
  2. Requete Access Excel 2
    Par Kalvin_20 dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/05/2008, 15h35
  3. Requete Access Excel
    Par Kalvin_20 dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/05/2008, 11h59
  4. Réponses: 18
    Dernier message: 29/05/2006, 10h42
  5. [VBA-A] Problème de communication Access-Excel
    Par finesse20 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2006, 16h08

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