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

Signaler
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
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

18 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
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 
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
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>
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
tu boucles comme dans la fonction, avec selected(i) = true

ps : pense à valider avec "réponse acceptée"
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

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
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

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
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

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 ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
et d'où vient cette ligne?

tu as copié les exemples avec la fonction....
tu n'as besoin QUE de la fonction :)
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

Oui j'ai essaye d'utiliser le 1er exemple pour voir si sa marche.
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

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 ?
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

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 ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
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()
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

Peux tu me donner un exemple ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
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
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

j'avoue....

Ok alors que veux tu dire exactement par boucler ligne et colonnes avec sFields() ?
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

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....
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
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
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

....bon bah j'y arrive pas
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
42
qu'as-tu essayé d'autre?