Recuperer element d'une liste pour requete sql [Résolu]

Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
- - Dernière réponse : PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
- 5 juin 2009 à 16:00
Bonjour,

J'ai une liste(cmbIntitule) contenant plusieurs noms de champs tous tires de ma bases de données.
J'aimerais pouvoir récupérer ces éléments et les mettre dans une requête SQL après le SELECT....

Par exemple si dans ma liste il y a titre, resume je veux que dans ma requete il soit marque SELECT titre, resume FROM...

Est-ce possible ?

Merci a tous
Afficher la suite 

18 réponses

Meilleure réponse
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
3
Merci
salut,

un combo (cmbIntitule) ne peut avoir qu'un seul item sélectionné, accessible par .TEXT

si c'est une liste, tu devrais revoir ta nomenclature

et dans ce cas le code est :
http://www.codyx.org/snippet_compter-lister-items-selectionnes-listbox_789.aspx

++


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
3
Merci
ah?....






Dim 
sFields() 
As String


Dim 
sSql 
As String




If 
GetSelectedItems(List1, sFields) > 
0

Then

    sSql = "SELECT " & Join(sFields, ", ") & " FROM
MATABLE;"
    MsgBox sSql
Else
    MsgBox "Veuilez sélectionner vos champs
de recherche"
    'ou alors
TOUS
    sSql = "SELECT
* FROM MATABLE;"
End If





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
3
Merci
tu boucles comme dans la fonction, avec selected(i) = true

ps : pense à valider avec "réponse acceptée"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 206 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
Euh désole ce n'est pas cmbIntitule, ça c'est ma combo sur laquelle j'alimente ma liste (liste1) contenant les noms des champs.
C'est bien une ListBox.
Pardon.
Je vais voir le lien de suite.

Merci
Commenter la réponse de yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
Ok je viens de voir le code est je n'ai pas très bien compris comment je pourrai utiliser ça dans une requête SQL...

Merci
Commenter la réponse de yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
En appelant ma fonction en cliquant sur un bouton j'ai un message d'erreur : "Espace de pile insuffisant"

Private Sub cmdGenerer_Click()

Dim items() As String

Call GetSelectedItems(liste1, items)

End Sub

Le debogeur point sur cette ligne de code :

MsgBox "il y a " & CStr(GetSelectedItems(liste1)) & "  item(s) sélectionné(s)"

Quel est le problème ?
Commenter la réponse de yafee
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
et d'où vient cette ligne?

tu as copié les exemples avec la fonction....
tu n'as besoin QUE de la fonction :)
Commenter la réponse de PCPT
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
Oui j'ai essaye d'utiliser le 1er exemple pour voir si sa marche.
Commenter la réponse de yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
C'est bon j'avais juste mal compris comment l'utiliser
Merci

Par contre comment définir une liste pour que tous les éléments soit sélectionnés par défaut ?
Commenter la réponse de yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
ReBonjour,

J'aimerais afficher le résultat dans ma requête dans une feuille Excel , voici mon code :

Dim bd As Database
Dim rst As Recordset
Set bd = OpenDatabase("....mdb")

Dim sFields() As String
Dim champs As String
Dim i As Integer

    If GetSelectedItems(liste1, sFields) > 0 Then
        champs = Join(sFields, ", ")
    End If
    Set rst = bd.OpenRecordset("Select " & champs & " From formation")

    Set myExcel = CreateObject("Excel.Application")
    myExcel.Visible = True 'Affiche ou non l'application excel
    Set myWk = myExcel.Workbooks.Add
   
    i = 1
    Do Until rst.EOF
        myWk.Sheets(1).Rows(i) = rst(" & champs & ")
        rst.MoveNext
        i = i + 1
    Loop

Mais il ne trouve apparemment pas les champs dans ma bdd "element non trouve dans cette collection"

Ais-je mal utiliser mon recordset ?
Commenter la réponse de yafee
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
tu as relus ton code?

tu cherches un champs qui s'appelle :
" & champs & "


et même si tu cherchais avec le contenu de la variable, elle retournera TOUS tes champs entrecoupés de virgules puisque tu as fais le JOIN au dessus. il faut boucler lignes et colonnes avec sFields()
Commenter la réponse de PCPT
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
Peux tu me donner un exemple ?
Commenter la réponse de yafee
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
après que tu aies essayé et que tu m'aies montré cet essai, oui

parce que pour le moment c'est que du copier/coller, le tout cuit c'est pas ici
Commenter la réponse de PCPT
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
j'avoue....

Ok alors que veux tu dire exactement par boucler ligne et colonnes avec sFields() ?
Commenter la réponse de yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
Est ce de ça dont tu parlais ?

    w = 0
    For i = 0 To liste1.ListCount - 1
        Do Until rst.EOF
        w = w + 1
            myWk.Sheets(1).Cells(i + 2, w) = rst(w - 1)
            rst.MoveNext
        Loop
    Next i

Le resultat ne m'affiche qu'une seule ligne alors que je devrais en avoir 197....
Commenter la réponse de yafee
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
il y a de l'idée mais c'est pas çà non

ne fais pas référence à la liste puisque tout n'y est pas forcément sélectionné et que tu aurais donc une erreur si la requête ne contenait pas un des champs dans le select
Commenter la réponse de PCPT
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
0
Merci
....bon bah j'y arrive pas
Commenter la réponse de yafee
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
29
0
Merci
qu'as-tu essayé d'autre?
Commenter la réponse de PCPT