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

VBA Access Discussion :

Requete SQL dans du VBA pour une création dynamique de requetes


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Par défaut Requete SQL dans du VBA pour une création dynamique de requetes
    Bonjour à tous,
    J'ai suivi le tutoriel de Christophe Warin et de Charles A, respectivement la Création et paramétrage dynamique de requêtes et Initiation - Débogage : requêtes écrites par VBA. Je les félicite au passage pour leur travail.

    Cependant, ma requete en SQL est trop grande pour.... VBA
    Je n'ai pas fait de fautes de SQL, j'ai vérifié également en utilisant debug.print.

    Il apparait que lors du debug.print dans la fenetre execution le code s'affiche sur 2 lignes, et seule la premiere ligne est enregistrée dans le champ access de la source SQL, la deuxieme est... ignorée, bien que stockée en VBA correctement.

    A noter que je veux faire rentrer mes lignes SQL dans le champ : "source" de mon formulaire (recordsource en VBA)

    Par contre, si dans le champ access je rentre la meme formule à la main, il ne me pose pas de probleme, d'ou mon soupçon d'un probleme entre vba et access.

    Une idée pour contourner le probleme?

    Merci à tous
    Damien

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    Cependant, ma requete en SQL est trop grande pour.... VBA
    mon soupçon d'un probleme entre vba et access
    Cherche autre chose.

    Es-tu sûr que ton code ne contient pas un saut de ligne ou un caractère intempestif.
    Jette un coup d'oeil ici, si c'est un problème de formatage du sql.

    http://www.developpez.net/forums/d99...-formater-sql/

  3. #3
    Membre éclairé
    Homme Profil pro
    Manager de Projet SAP
    Inscrit en
    Mars 2009
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Pologne

    Informations professionnelles :
    Activité : Manager de Projet SAP
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2009
    Messages : 210
    Par défaut
    Bonjour.

    Si je comprend bien, dans VBA, la requete sql est sur deux lignes avec, a la fin de la 1ere ligne, un espace et un "_".
    Si la requete sql est correct, peut etre faire de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim Requete as string
     
    requete ="select................from ........ where.....and........"
    requete = requete & " and........ and........"
     
    'Affectation ensuite de la valeur Requete a l'endroit ou se trouve actuellement le select.
    J'ai eu ce probleme il y a quelques temps avec des requetes sql dans VBA qui faisaient entre 3 et 4 lignes.

    Cdlt.
    Jean

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour jj4822,

    Ce que tu signales n’est pas spécifique au sql.
    Si tu veux, pour des raisons de lisibilité, écrire ton code sur plusieurs lignes, tu peux utiliser un espace et un "_".
    Ou procéder par concaténations successives comme tu l’indiques.
    Cela dépend des circonstances.

    A contrario, pour écrire plusieurs instructions sur une même ligne :
    http://access.developpez.com/faq/?pa...#PlrsLignEnUne

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Que veux-tu dire par trop grande ?

    Philippe

  6. #6
    Membre averti
    Inscrit en
    Août 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 45
    Par défaut
    Bonjour à tous et merci de vous préoccuper de ce problème.
    jj4822, meme si j'ai malgré tout essayé, Claude a raison, cela n'est pas spécifique au SQL et n'est utile que pour la lisibilité.
    Claude, j'ai essayé ton outil, il est plutot pratique, merci, mais cela me donne le même résultat que celui que j'avais avant.

    Ce que je propose, c'est de copier mon code SQL ici, je vous propose pour ceux qui veulent bien d'inserer via VBA ce code dans un recordsource d'un formulaire d'une de vos bases.
    Vous constaterez que l'opération se passe correctement mais que le remplissage de la propriété recordsource s'arrete un peu avant la fin de la clause FROM, le reste est ignoré.
    En passant par un debug.print, on constatera que tout ce qui est copié est exactement la meme chose que ce qui apparait sur la premiere ligne d'un debug.print

    En esperant que quelqu'un arrive à insérer cette requete entierement dans mon formulaire, j'attends de vos nouvelles.
    Merci
    Damien

    PS : la variable test n'a pas d'influence dans le résultat, j'ai essayé avec un critère fixe et non variable, j'aboutis au meme résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Form_FormDevis.RecordSource = "SELECT TblDevis.[Année Salesforce], TblDevRevItemAlt.[Numero de devis], TblDevis.[Trigramme commercial], NomCommercial.[Nom commercial], NomCommercial.[Prenom Commercial], TblDevis.[Client direct], TblDevis.[Offre interne ?], TblDevis.[Client interne], TblDevis.[Nom de Projet], TblDevis.[Due date], TblDevRevItemAlt.Revision, TblDevRevItemAlt.Item, TblDevRevItemAlt.Alternative, TblDevRevItemAlt.FCE " & _
                                    "FROM TblRevisions RIGHT JOIN (TblItems RIGHT JOIN ((NomCommercial INNER JOIN (ClientsInternes RIGHT JOIN TblDevis ON ClientsInternes.[Clients Internes] = TblDevis.[Client interne]) ON NomCommercial.[Trigramme commercial] = TblDevis.[Trigramme commercial]) INNER JOIN (TblCalculsElec RIGHT JOIN (TblAlternatives RIGHT JOIN TblDevRevItemAlt ON TblAlternatives.[Nom de l'alternative] = TblDevRevItemAlt.Alternative) ON TblCalculsElec.FCE = TblDevRevItemAlt.FCE) ON TblDevis.[Numéro de devis] = TblDevRevItemAlt.[Numero de devis]) ON TblItems.[Nom de l'item] = TblDevRevItemAlt.Item) ON TblRevisions.Revision = TblDevRevItemAlt.Revision " & _
                                    "WHERE (((TblDevRevItemAlt.[Numero de devis])=" & Chr(34) & text & Chr(34) & "));"

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

Discussions similaires

  1. Requete SQL dans du VBA
    Par doryan dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/05/2009, 09h48
  2. [MySQL] savoir les requetes insérés dans la base pour une date précise
    Par betadev dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/02/2009, 21h40
  3. Réponses: 5
    Dernier message: 09/07/2008, 17h04
  4. compter avec une requete SQL dans VBA
    Par michael1971 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/01/2008, 09h20
  5. requete sql dans code vba
    Par kernel57 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/01/2008, 15h30

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