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 et SQL] Requête SQL utilisant une variable VBA


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 73
    Points
    73
    Par défaut [VBA et SQL] Requête SQL utilisant une variable VBA
    Bonjour,

    J'ai débuté le codage sous ACCESS (en VBA) il y a deux semaine tout au plus et je suis tout nouveau sur developpez.net.
    Je me permet de faire appel à vous car je suis confronté à un petit problême et vous pourrez peut-être m'aider.

    Exposé des faits :
    J'ai une requête SQL dans un recordset. Tout marche quand je met :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ......... WHERE [Bla].[1] = '000A000'"
    Mais plus rien quand je met :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "SELECT ......... WHERE [Bla].[1] = Ref" 
    "SELECT ......... WHERE [Bla].[1] = 'Ref'"
    "SELECT ......... WHERE [Bla].[1] = '.Ref.'"          
    "SELECT ......... WHERE [Bla].[1] = `Ref`"
    "SELECT ......... WHERE [Bla].[1] = "Ref""

    Avec "Ref" ma variable VBA dont le contenu observé avec un MsgBox est tout à fait correct. Pourriez vous m'aider s'il vous plaît !

    D'avance merci.

    Altrensa

  2. #2
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut
    Salut Altrensa,

    Je pense qu'il faut que tu identifies ton formulaire avec par exemple un
    Me.Ref , en admettant que Ref est dans ton formulaire courant.

    Sinon il faut identifier ton formulaire par la syntaxe suivante :

    Forms!Nom_Formulaire!Ref

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 73
    Points
    73
    Par défaut
    Bonjour Maxi-môme,

    En fait c'est ce que je fait car :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ref = Me.[BLA].Column(0)
    Pour BLA une zone de liste déroulante. De plus, il se trouve qu'un MsgBox de cette variable (MsgBox(Ref)) me renvoit la bonne valeur.

    Merci

    Altrensa

  4. #4
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut
    OK,

    Je viens de voir que Ref est une variable c'est bien ça ?
    A ce moment la, dans ta requete, tu dois faire

    "SELECT ......... WHERE [Bla].[1] = " & Ref & " ; "

    A entourer par exemple avec des ' si c'est une chaine de caracteres, ce qui donne :

    "SELECT ......... WHERE [Bla].[1] = '" & Ref & "' ; "

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 73
    Points
    73
    Par défaut
    Merci Maxi-môme,

    Ref est effectivement une variable et plus précisément une chaîne de caractère (Dim Ref As String).
    Cependant, le code que tu m'as donné provoque une erreur de compliation. Etant habitué (un peu) au SQL, j'ai supposé que c'était les guillemets qui refermaient la zone de la requête. J'ai donc essayé avec des "chr(34)" dans une requête du type :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ...... WHERE [BLA].[Z] = 'chr(34)&Ref&chr(34)'"

    Le résultat ne fut pas plus glorieux. Si tu as une autre idée, je suis donc preneur, merci.

    Altrensa

  6. #6
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut
    Hum, bizarre...

    Peux-tu mettre un petit aperçu de ton code stp ? Notamment toute ta requete SQL.

  7. #7
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello, ta réinterprétation de la (bonne) réponse de Maxi-Mome est étrange

    il manque l'opérateur de concaténation esperluette (&)
    Essaie un truc du genre :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ...... WHERE [BLA].[Z] = '" & Ref & "'"
    Citation Envoyé par Altrensa
    Merci Maxi-môme,

    Ref est effectivement une variable et plus précisément une chaîne de caractère (Dim Ref As String).
    Cependant, le code que tu m'as donné provoque une erreur de compliation. Etant habitué (un peu) au SQL, j'ai supposé que c'était les guillemets qui refermaient la zone de la requête. J'ai donc essayé avec des "chr(34)" dans une requête du type :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ...... WHERE [BLA].[Z] = 'chr(34)&Ref&chr(34)'"

    Le résultat ne fut pas plus glorieux. Si tu as une autre idée, je suis donc preneur, merci.

    Altrensa
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 73
    Points
    73
    Par défaut
    Voici, Maxi-môme, ma requête complère qui marche quand je met '00000' à la place de Ref.

    Code : 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
    30
    31
    Private Sub Ref_produit_choisi_Change()
     
        'On récupère la référence du produit dont on souhaite la
        'maitrise technique
        Dim Ref As String
        Ref = Me.[Ref_produit_choisi].Column(0)
     
    'DEBUG
    MsgBox (Ref)
     
        'On cherche les champs correspondants à cette référence
        Set r = CurrentDb.openrecordset("SELECT * FROM [Maitrise technique] WHERE [Maitrise technique].[Ref produit]= 'chr(34)&Ref&chr(34)'")
     
        'On les stoque dans des variables
        If Not r.EOF Then
            Sel_fr = r.Fields(1).Value
            Sel_en = r.Fields(2).Value
            Sel_de = r.Fields(3).Value
            Sel_es = r.Fields(4).Value
     
    'DEBUG
    MsgBox (Sel_fr)
        End If
     
        'On met ses variables dans les champs de la référence en cours de modification
        Me.[Sélection fr] = Sel_fr
        Me.[Sélection en] = Sel_en
        Me.[Sélection de] = Sel_de
        Me.[Sélection es] = Sel_es
     
    End Sub
    D'avance merci, Altrensa

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 73
    Points
    73
    Par défaut
    Merci cafeine de voler à mon secours,

    Citation Envoyé par cafeine
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ...... WHERE [BLA].[Z] = '" & Ref & "'"
    En fait comme je le disait au dessus, la compilation ne se fait plus du tout avec ce code....

    D'où l'essai avec les chr(34) où j'ai mis les esperluettes d'ailleurs...

    Voili voilou

    D'avance merci

    Altrensa

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 73
    Points
    73
    Par défaut
    Qué boulet !!!

    En fait j'avais pas mis les espaces autour de l'esperluette (ou alors j'avais oublié un truc) et maintenant cela fonctionne à merveille, merci beaucoup Maxi-môme et cafeine d'être venu en aide au débutant que je suis...

    Et encore une ligne à votre palmarès des problèmes résolus, encore merci

    Altrensa

  11. #11
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut
    De rien, bon courage pour la suite, et surtout n'hésite pas à consulter le forum et amener d'éventuelles réponses. Ben oui, le but d'un forum, c'est de partager, pas uniquement de poster quand on a un problème.

    (je dis pas ça pour toi spécialement, mais en parcourant les comptes utilisateurs, je vois qu'il y a plein de "membres" qui ont posté moins de 3 fois depuis leur inscription qui date de plus d'un an !)

    C'était la pensée du jour

  12. #12
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 73
    Points
    73
    Par défaut
    J'essaierais d'apporter mes quelques connaissances dans les domaines ou je suis un peu plus à l'aise.

    Encore merci

    Altrensa

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

Discussions similaires

  1. Requête sql avec test d'une variable
    Par missmiss89 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 30/06/2011, 10h42
  2. [MySQL] Requête sql avec test d'une variable très longue
    Par missmiss89 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/06/2011, 14h25
  3. Réponses: 6
    Dernier message: 23/08/2007, 09h49
  4. [Débutant][SQL] Requête SQL à l'intérieur d'une requête SQL
    Par Kily10 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/10/2006, 11h54
  5. Réponses: 31
    Dernier message: 24/08/2006, 12h13

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