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

Macros et VBA Excel Discussion :

exécution d'une requête SQL dans access


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Points : 47
    Points
    47
    Par défaut exécution d'une requête SQL dans access
    Bonjour,

    Voilà, j'ai creer une requete en SQL puis je l'ai adapter pour qu'excel me creer une requête parametrable suivant le Nom de la personne.

    Je sais qu'il y a des expression comme le nombre 30 ici qui doit être prit comme un nombre et non comme une chaine de caractère. C'est pourquoi je concaténe ma requête de cette façon. Cependant je ne connais pas tous les termes à changer pour que ma requête s'execute.

    Nom est une variable prenant comme valeur : "Prénom NOM"

    Je dois mettre un triple " pour que VB comprenne que je veut qu'il y ai des guillemets dans ma chaine de caractère (les deux premiers) et un troisième pour dire la chaine de caractère se stop ici et on met notre variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Création de la requête SQL
    rq_sql = "SELECT Sum([poids].[poids]) AS [DC <= 30j] FROM fusion INNER JOIN (poids INNER JOIN transposeur ON poids.[Table des opérateurs] = transposeur.Opérateur) ON fusion.Article = transposeur.[Dés Article Commercial/saisi] WHERE (((fusion.RAI)=""" & Nom & """) AND ((fusion.Terminée) Is Null) AND ((Date()-[fusion].[Date contractuelle])<=" & 30 & "));"
    Dim rst As New ADODB.Recordset
        
    rst.Open rq_sql, cnx
    
    rst.MoveFirst
    dcinf30j = CDbl(rst("DC <= 30j"))
    rst.Close
    Set rst = Nothing
    Mon code se stop au niveau de la ligne en rouge, cependant j'ai collé avant execution la requête dans une cellule, et lorsque je la passe en dur dans access elle s'execute et me donne le bon résultat.

    Pouvez vous me dire ce que je doit changer au niveau de mon code VB pour que ma requête SQL fonctionne svp ?

    PS : Je pense que la connection avec la base n'est pas à remettre en cause puisque j'ai d'autres requêtes qui fonctionnent

    Merci d'avance,
    Skyarnangel

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Dans une requête SQL, il ne faut pas doubler le signe ", mais utiliser l'apostrophe

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (((fusion.RAI)='" & Nom & "') AND ((fusion.Terminée) Is Null) AND ((Date()-[fusion].[Date contractuelle])<=" & 30 & "));"
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Merci, mais ca ne fonctionne toujours pas.

    Je ne pense pas que le problème viens du nom puisque je passe dans une autre requête mes paramêtes de cette façon.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Quel est le message d'erreur?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent 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 : 70
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    A mon avis pour les délimiteurs tu peux utiliser l'apostrophe ou les doubles doubles quotes.
    QQ points :
    - ta connection est ouverte sur quoi, une base Access?
    - condition est null : WHERE Isnull(..)
    - ...

    Conseil:
    Commence par une requête plus simple, sur une table, mets au point les liaisons une par une, et complique ensuite. PArce que tant que tu auras 1 erreur tu ne verras pas si tu es proche ou loin du but...

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    La connection est ouverte sur une base access oui
    La condition is null fonctionne dans l'autre requête
    J'ai fait quelques testes pour delimiter d'ou pouvez provenir l'erreur, et elle proviens au niveau de la jointure.

    J'ai fait une jointure plus simple qui passe sous access sans aucun problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM poids 
    INNER JOIN transposeur 
    ON poids.[Table des opérateurs] = transposeur.Opérateur;
    Ce qui me liste l'ensemble des opérateurs avec leurs poids

  7. #7
    pgz
    pgz est déconnecté
    Expert éminent 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 : 70
    Localisation : France

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

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    C'est une bonne base puisque tu tiens une requête qui marche. Etape suivante, ajoute 1 liaison.

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Je me suis mal exprimmé, la requête ci dessus ne fonctionne pas.

    Mais d'autres requetes comme celle là fonctionnent

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Count(*) AS [DC <= 30j]
    FROM fusion
    WHERE fusion.RAI=""" & nom & """ And fusion.Terminée Is Null And (Date()-fusion.[Date contractuelle])<=" & 30 & ";

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Quel tache suis je !

    Le problème viens que je travaille avec deux base de donnée access (pour des raisons de temps d'accés) et la base que j'ai sur mon bureau est à jour alors que je fait des requêtes sur une base qui ne l'était pas (dans mon cas, la table poids n'existe que d'un coté)

    Merci de votre aide

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

Discussions similaires

  1. [PHP 5.0] Exécuter une requête SQL dans une fonction Javascript
    Par PrinceMaster77 dans le forum Langage
    Réponses: 13
    Dernier message: 08/07/2011, 04h53
  2. exécuter une requète SQL dans un script
    Par jeanbernard.weck dans le forum VBScript
    Réponses: 0
    Dernier message: 14/06/2011, 10h16
  3. [AC-2003] Exécuter une Requête SQL dans VBA
    Par domik dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 24/08/2010, 13h22
  4. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07
  5. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11

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