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 :

Requete SQL avec plusieurs variables?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Par défaut Requete SQL avec plusieurs variables?
    Bonjour,
    Le titre n'est pas très explicite, néanmoins, je vais vous expliquer.

    J'ai une variable tableau qui contient des valeurs. Je souhaiterais pour chacune de ces valeurs, executer une requete sql qui irait chercher d'autres informations en fonction de ces différentes valeurs.

    Pour le moment je fais une boucle qui execute la requete pour chaque valeur de ma variable tableau. Le soucis c'est que la procedure est assez longue surtout si ma variable tableau contient une 20ene de lignes.

    Voici mon code :

    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
     
    Public Montableau() As String
     
    Sub RequeteAutreNomModif()
    Dim Requete As String
    Dim i As Integer
    ReDim ValeurRequete(UBound(MonTableau))
    For i = LBound(MonTableau) To UBound(MonTableau)
        Call ConnexionBase
        Requete = "SELECT Champ FROM [Table$] WHERE Critere='" _
        & Replace(MonTableau(i), "'", "''") & "'"
        Rst.Open Requete, Cn, adOpenStatic
        ValeurRequete(i) = Rst.Fields(0).Value
        Call DeconnexionBase
    Next i
    End Sub
    Ce code fonctionne parfaitement, mais est assez long. Connaissez vous une methode pour envoyer l'enssemble de la variable tableau en paramètre?
    Est-ce possible?

    Merci de votre aide à tous.

    Cordialement,
    Jojo.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour Jojo,

    As tu essayé avec le prédicat AND ? du style :

    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
     
     
    Sub RequeteAutreNomModif()
     
        Dim SQL As String
        Dim I As Integer
     
        SQL = SQL & "SELECT Champ FROM [Table$] WHERE Critere='" _
                  & Replace(Montableau(1), "'", "''") & "'"
     
        For I = LBound(Montableau) + 1 To UBound(Montableau)
     
            SQL = SQL & " AND Critere='" _
                      & Replace(Montableau(I), "'", "''") & "'"
        Next I
     
        Debug.Print SQL 'contrôle de la construction SQL
     
    End Sub
    Je n'ai pas testé.

    Hervé.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Oups,

    C'est mieux avec OR, donc un truc du genre :

    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
    32
     
     
    Sub RequeteAutreNomModif()
     
        Dim SQL As String
        Dim I As Integer
     
        SQL = SQL & "SELECT Champ FROM [Table$] WHERE Critere='" _
                  & Replace(Montableau(1), "'", "''") & "'"
     
        For I = LBound(Montableau) + 1 To UBound(Montableau)
     
            SQL = SQL & " OR Critere='" _
                      & Replace(Montableau(I), "'", "''") & "'"
        Next I
     
        Debug.Print SQL 'Contrôle de la chaîne
     
        With Rst
     
            .Open SQL, Cn, adOpenStatic
            .MoveFirst
     
            Do Until .EOF
                I = I + 1
                 ValeurRequete(I) = .Fields(0)
                .MoveNext
            Loop
     
        End With
     
    End Sub

Discussions similaires

  1. Requete sql avec des variables de contextes.
    Par helmii dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 12/05/2014, 23h53
  2. requete sql avec des variables
    Par brice97431 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/08/2012, 15h18
  3. Requete SQL avec plusieurs code
    Par r0nsync dans le forum Développement
    Réponses: 6
    Dernier message: 11/08/2010, 14h46
  4. Requete SQL avec plusieurs jointures
    Par Esil2008 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2009, 13h51
  5. requete sql avec variable
    Par Mihalis dans le forum Bases de données
    Réponses: 15
    Dernier message: 07/04/2006, 11h17

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