Recuperer element d'une liste pour requete sql

Résolu
yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011
- 3 juin 2009 à 20:29
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
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

18 réponses

PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
4 juin 2009 à 08:06
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 
3
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
4 juin 2009 à 10:21
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>
3
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
4 juin 2009 à 12:03
tu boucles comme dans la fonction, avec selected(i) = true

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

4 juin 2009 à 09:44
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

4 juin 2009 à 10:12
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
0
yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

4 juin 2009 à 11:33
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 ?
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
4 juin 2009 à 11:42
et d'où vient cette ligne?

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

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

4 juin 2009 à 11:50
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 ?
0
yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

5 juin 2009 à 11:10
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 ?
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
5 juin 2009 à 11:32
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()
0
yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

5 juin 2009 à 11:44
Peux tu me donner un exemple ?
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
5 juin 2009 à 12:06
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
0
yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

5 juin 2009 à 12:26
j'avoue....

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

5 juin 2009 à 13:33
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....
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
5 juin 2009 à 13:51
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
0
yafee
Messages postés
34
Date d'inscription
lundi 27 décembre 2010
Statut
Membre
Dernière intervention
8 janvier 2011

5 juin 2009 à 15:28
....bon bah j'y arrive pas
0
PCPT
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Membre
Dernière intervention
3 février 2018
50
5 juin 2009 à 16:00
qu'as-tu essayé d'autre?
0