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

Messages postés
6789
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
- - Dernière réponse : mortalino
Messages postés
6789
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 !
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
6789
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
3
Merci
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 !

Dire « Merci » 3

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

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

Commenter la réponse de mortalino
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
26
3
Merci
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]

Dire « Merci » 3

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

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

Commenter la réponse de PCPT
Messages postés
6789
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
0
Merci
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 !
Commenter la réponse de mortalino
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
26
0
Merci
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)

++
Commenter la réponse de PCPT
Messages postés
616
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
4 juillet 2012
0
Merci
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
Commenter la réponse de cs_pluplu
Messages postés
6789
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
16
0
Merci
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 !
Commenter la réponse de mortalino