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

cs_lacomm 299 Messages postés lundi 14 juin 2004Date d'inscription 5 juillet 2013 Dernière intervention - 4 juin 2008 à 11:35 - Dernière réponse : cs_lacomm 299 Messages postés lundi 14 juin 2004Date d'inscription 5 juillet 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 4 juin 2008 à 12:15
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 4 juin 2008 à 12:17
0
Merci
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 ...
Commenter la réponse de cs_Jack
cs_lacomm 299 Messages postés lundi 14 juin 2004Date d'inscription 5 juillet 2013 Dernière intervention - 4 juin 2008 à 12:31
0
Merci
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
Commenter la réponse de cs_lacomm

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.