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 :

[SQL & VBA]Insérer champ dans instruction SQL existante


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Par défaut [SQL & VBA]Insérer champ dans instruction SQL existante
    Bonjour,

    Je cherche à modifier une instruction SQL existante (une rqt enregistrée en fait) par VBA en ajoutant un champ ;
    Je me demande comment placer ce nouveau champ dans le SQL de la rqt de telle sorte qu'il ne soit pas placé en fin d'instruction (ce qui génère une erreur).
    Je me demande si je ne dois pas chercher la clause FROM dans la rqt pour placer le nouveau champ juste avant.
    Est-ce que la fonction InStr peut m'aider à faire ceci?

    Merci pour vos éclairages...

    SE

  2. #2
    Membre éclairé Avatar de kirgan
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Par défaut
    hello,

    je ne sais pas si c'est ce que tu veux, mais généralement, pour générer du code SQL, tu fais une petit procédure en plusieurs étapes

    - tu génères le début de ton message SQL
    - tu crées une boucle, qu insère les tables voulues
    - finis le StringSQL avec FROM etc.

    Ne serait-il pas dès lors plus facile de simplement modifier ton code VB pour permettre une génération de ce genre, plutot que de rechercher le FROM, de couper, d'insérer, et de tout recoller?

    Sinon, InStr te permet en effet de retrouver la position "FROM" dans un String, puis de là tu peux couper, insérer, recoller...

  3. #3
    Membre émérite Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Par défaut
    Merci pour ta réponse...

    Le champ que je veux insérer dans l'instruction existante est une variable résultant de la concaténation de deux InputBox...

    Pour rechercher la clause FROM avec la fonction InStr la syntaxe c'est quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InStr(1, strSQL, "FROM", vbTextCompare)
    Qu'est-ce que je dois faire de la valeur renvoyée?
    Dois-je supprimer tout ce qui est avant puis ajouter le champ et ce que je viens de couper...?

    SE


  4. #4
    Membre éclairé Avatar de kirgan
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Par défaut
    hmm je dois avouer ne pas être un pro des substrings en vba...

    on peut imaginer ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strSQL = "SELECT nom FROM matable WHERE nom=blabla"
    Dim pos as Integer
    pos = InStr(1, strSQL, "FROM", vbTextCompare) 'partie copiée de ton code, non testée ^^
    si on fait un InStr dessus, ca nous renvoie la premiere occurence de FROM, dans ce cas 12.

    Ensuite,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim str1 as String
    str1 = Right(strSQL, pos)
    crée un string avec les 12 permiers caractères. Ensuite, on peut déduire que la suite du string est en position 12... Et la longueur totale avec Len. Il nous faut donc la partie gauche du string, depuis 12, sur une longueur de Len-12.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim str2 as String
    str2 = Left(sqlSTR, Len(strSQL)-12)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strSQL = str1 & "tes nouveaux paramètres" & str2
    A affiner avec des msgBox, c'est peut-être 11 et pas 12, en fonction de la valeur de la premiére position (0 ou 1), mais globalement c'est +/- ca je pense!

    Tiens-moi au courant

    PS: si quelqu'un connait un "SubString(begin, end)" en VBA, je suis curieux - sinon, ben ya qu'à l'écrire

  5. #5
    Membre éclairé Avatar de kirgan
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 127
    Par défaut
    oouuuuuuuups

    petite erreur, j'ai inversé Right et Left

    Right prend bien la FIN de mon string, Left le DEBUT

  6. #6
    Membre émérite Avatar de stéphane_ais2
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 792
    Par défaut
    Merci pour ta nouvelle réponse...
    Je regarde ça et te tiens au courant...

    SE

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

Discussions similaires

  1. Problème avec les apostrophes dans le sql en VBA
    Par cyrilboulan dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 14/03/2017, 10h11
  2. Insérer variable dans instruction SQL
    Par nicodgb dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/03/2009, 16h59
  3. VBA : Insérer champs via requête SQL
    Par lesguignols dans le forum VBA Access
    Réponses: 8
    Dernier message: 31/12/2008, 12h17
  4. [A97] VBA : Commande sql pour insertion de champs dans une table
    Par JeremieT dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/07/2006, 13h12
  5. Format dans Requete SQL sous VBA
    Par Sam 069 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/07/2006, 12h09

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