Aucune valeur donnée pour un ou plusieurs des paramètres requis VB6 ACCESS ADO

Résolu
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 4 juin 2008 à 11:35
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 4 juin 2008 à 12:31
Bonjour,
J'ai deux bases de données, deux connexions, la première BD contient des variables qui renvoient à la deuxième base de données.
Le but est de parcourir la première base remplie par l'utilisateur pour parcourir la deuxième et ressortir les exemples des catégories d'animaux.

'''Premier recordset pour la base qui contient les valeurs "amphibiens" et "mammiferes"
rsCombi.Open "SELECT * FROM Combinaisons ;", cnxCombi
rsCombi.MoveFirst
Do Until rsCombi.EOF
'''nbElVar = 2
    NbElVar = CStr(rsCombi("Nmot"))

    For i = 1 To NbElVar
        elvar(i).Open "SELECT Expressions FROM tblDico WHERE Categorie = [" & rsCombi("Mot" & CStr(i)) & "];", cnx
    Next i
c'est la ligne en gras qui bloque
dans le débuggeur, rsCombi = "amphibiens"
la tblDico contient une colonne Expressions qui contient des exemples de ces catégories d'animaux et une colonne Categorie qui contient "amphibiens" etc.
J'obtiens le message suivant:
Aucune valeur donnée pour un ou plusieurs des paramètres requis
J'ai changé plusiseurs fois les noms et en fait cette routine est inspirée d'une routine qui fonctionne parfaitement, mais avec une seule base.

Merci à vous

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 juin 2008 à 12:15
Salut
En fait, tu as confondu la syntaxe avec crochets [ et ] des champs (très bonne habitude) avec les données (qui n'en n'ont pas besoin)
Puisque le contenu du champ Categorie semble être défini comme Texte dans la DB, il te suffit de remplacer les crochets par des ' :
   "SELECT Expressions " & _
   "  FROM tblDico " & _
   " WHERE Categorie = '" & rsCombi("Mot" & CStr(i)) & "';",

Je ne comprends pas ce que rsCombi("Mot" & CStr(i)) représente.
Est-ce le nom du champ ou bien son contenu ?
Je ne sais pas si on peut utiliser un RecordSet comme celà.
Voir ces syntaxes :
   rsCombi.Fields(i).Name    pour le nom du champ
   rsCombi.Fields(i).Value   pour le contenu du champ

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
1
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 juin 2008 à 12:17
PS : Sinon, il y a aussi le traditionnel
      rsCombi!NomDuChamp      si ce nom est standard
   rsCombi![Nom du champ]  si ce nom comporte des espaces ou des accents ...
0
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
4 juin 2008 à 12:31
Merci, c'était bien les ', que j'avais pourtant testé dès le départ sans succès, mais j'ai dû sans doute faire d'autres modifs.
rsCombi("Mot" & CStr(i)) représente le contenu du champ, ca marche très bien avec les '  mais je prends bonne note des autres propositions si ca accroche plus loin.
Ca marche aussi peut-être parce qu'il y a une table vide et le code suivant, que je ne sais pas expliquer:

 For i = NbElVar + 1 To MAXELVAR
        elvar(i).Open "SELECT Expression FROM tblOneRow;", cnx
        elvar(i).MoveFirst
Next i

Encore merci
0
Rejoignez-nous