VB6, résultat d'une requête en imbriquant la valeur d'un Combo

Résolu
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 15 juin 2006 à 23:17
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 16 juin 2006 à 17:40
Salut à tous,

J'ai une requête qui cherche le nom des champs de la seule table et ces résultats sont insérés dans un Combo.

Cela pour permettre à l'utilisateur de choisir le champ.
Jusque là, ça va !

Ensuite, je souhaite faire une autre requête pour trouver les enregistrements par rapport au Champs donc choisi dans le Combo.

Voici ce que j'ai fait (essayer convient mieux) :
(je vous passe certaines déclarations)

Set Db = DBEngine.Workspaces(0).OpenDataBase(NomBase)

sql = "SELECT '" & cboNomsChamps.Text & "' FROM ListeProduit"
(jusque là, OK)

Set Rs = Db.OpenRecordset(sql)
Rs.MoveFirst

Do While Rs.EOF = False
lbxListe..AddItem Rs!???????????
Rs.MoveNext
Loop

En gros, je sais pas quoi mettre à la place des ??
J'ai mis 'cboNomsChamps.Text', ==> erreur

J'ai aussi créer NomChampTemp As Field
puis Set NomChampTemp = cboNomsChamps.Text
et bien d'autres mais rien ne fonctionne.

Quelqu'un aurait-il la bonté de m'indiquer la bonne syntaxe ?

En tout cas merci à tous.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 juin 2006 à 02:29
bon ben 3 heures de recherche mais j'ai trouvé et je sais pas comment !
D'ailleurs, si quelqu'un en voyant ma réponse peut m'expliquer. Merci

Voilà ce que j'ai mis :

Set Db = DBEngine.Workspaces(0).OpenDataBase(NomBase)

sql = "SELECT * FROM ListeProduit"
(j'ai viré le combo.text pour tout (*))

Set Rs = Db.OpenRecordset(sql)
Rs.MoveFirst

For each fld In Rs.Fields
If fld.Name = cboNomsChamps.Text Then
Do While Rs.EOF = False
lbxListe.AddItem fld
Rs.MoveNext
Loop
Exit For
End If
Next fld

Donc voilà, pas tout compris mais ça fonctionne et c'est le principal !
D'ailleurs ça commençait à taper sur les nerfs ... Ouf sauvé.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 juin 2006 à 02:45
salut Mortalino,

sql = "SELECT '" & cboNomsChamps.Text & "' FROM ListeProduit"

beh.... non. le nom du champ n'a pas à être entre côtes (ummmmm).....

après un lbxListe.AddItem Rs(0) devrait suffir...

++
PCPT  [AFCK]
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 juin 2006 à 03:36
Salut & Merci PCPT,

OK pour la requête. Dans les tuto les membres avaient mis les données d'un contrôle entre côte, et les dates entre "#", c'est pour ça.
C'est bon à savoir.

D'ailleurs il me semble que c'est toi qui m'a filé la combine pour le Replace(Item, "'", "''") et qui m'a bien dépatouillé.

Jusqu'à présent, j'ai vu "Rs!NomChamp" pour récupérer tous les enregistrements mais ce que j'ai du mal à comprendre, c'est mon "lbxListe.AddItem fld" qui fonctionne !

Sachant qu'en plus j'ai déclaré mon fld par Dim fld As Field, je pensais qu'il fallait le mettre après le => Rs!

En tout cas merci de tes précisions qui comme toujours me font évoluer.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 juin 2006 à 04:04
côte ou double ou rien, pour les valeurs (donc après le where). avant, soit rien, soit crochets (si le nom du champ contient des espaces).

ton exemple fonctionne avec fld uniquement parce que tu testes avant si le nom = combo. (logique puisque Select *)

ps : si tu déclares un fld, n'oublie pas ensuite de le détruire (set fld = nothing)

++
0

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

Posez votre question
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 4 juillet 2012
16 juin 2006 à 07:42
J'ai déposé hier une source dans laquelle il y a un exemple de recherche SQL selon le choix fais dans un datacombo mais selon ADO si ça t'intéresse
http://www.vbfrance.com/codes/GESTION-PROJET-VB6-ADO-ACCESS_38123.aspx
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 juin 2006 à 17:40
Salut et merci pluplu !

Je vais voir ça et je te tiens au courant en commentaire.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
Rejoignez-nous