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

Messages postés
37
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
7 mars 2013
- - Dernière réponse : Calade
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
- 15 avril 2011 à 15:25
Bonjour,
j'ai une base de données Access 2003 et une application VB Net 2008 et voici mon code:


Dim MyConnexion As OleDbConnection = New oleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & "C:\Ressorts.mdb")
Dim MyConnexion2 As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & "C:\Ressorts.mdb")
Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
Dim Mycommand2 As OleDbCommand = MyConnexion2.CreateCommand()
Mycommand.CommandText = "SELECT RESSORTS.* FROM RESSORTS"
MyConnexion.Open()
Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()

Do While myReader.Read()
Res1 = myReader.GetString(1)
QteRes1 = myReader.GetDouble(2) * LongRessort
Res2 = myReader.GetString(3)
QteRes2 = myReader.GetDouble(4) * LongRessort
PoidInf = myReader.GetDouble(5)
PoidSup = myReader.GetDouble(6)
If PoidTabFrot >= PoidInf And PoidTabFrot <= PoidSup Then
Mycommand2.CommandText = "SELECT Qte_Disp FROM Disponibilite_Ressort WHERE Code-Composant LIKE " & Res1
MyConnexion2.Open()
MsgBox(Mycommand2.CommandText)
Dim myReader2 As OleDbDataReader = Mycommand2.ExecuteReader()
Do While myReader2.Read()
Qtedisp = myReader2.GetDouble(0)
If Qtedisp >QteRes1 And Res2 "Null" Then
Disp1 = True
Disp2 = True
End If
Loop
myReader2.Close()
MyConnexion2.Close()
End If
If Disp1 True And Disp2 True Then
Ressort1 = Res1
QteRessort1 = QteRes1
Ressort2 = Res2
QteRessort2 = QteRes2
Exit Do
End If


Le problème c'est que au moment de l'exécution j'obtient une erreur au niveau du lecteur myReader2 (Dim myReader2 As OleDbDataReader = Mycommand2.ExecuteReader()) l'erreur est: Aucune valeur donnée pour un ou plusieurs des paramètres requis. vu que Disponibilite_Ressort est une requête dans la base pas une table, est ce ça le problème ou toute la requête est fosse?
Afficher la suite 

9 réponses

Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Bonjour,

Je ne suis pas sur à 100% de ce que j'avance, mais si je me souviens bien LIKE marche avec des chaînes de caractères, donc essaye comme ça:

Mycommand2.CommandText = "SELECT Qte_Disp FROM Disponibilite_Ressort WHERE Code-Composant LIKE '" & Res1 & "'"



Calade
Commenter la réponse de Calade
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Désolé, ma réponse est incomplète.
L'opérateur marche comme un modèle (comme son nom l'indique, il faut donc rajouter un joker indiquant où il est susceptible d'y avoir d'autres caractères, ce qui donne (il faut choisir l'une des 3 écritures ci-dessous):

Mycommand2.CommandText = "SELECT Qte_Disp FROM Disponibilite_Ressort WHERE Code-Composant LIKE '%" & Res1 & "'" pour avoir les concordances avec le contenu de Res1 et d'autres caractères situés seulement AVANT (en d'autres termes le contenu de Res1 sera considéré comme la fin de la concordance.

Mycommand2.CommandText = "SELECT Qte_Disp FROM Disponibilite_Ressort WHERE Code-Composant LIKE '" & Res1 & "%'" pour avoir les concordances avec le contenu de Res1 et d'autres caractères situés seulement APRES (en d'autres termes le contenu de Res1 sera considéré comme le début de la concordance.

Mycommand2.CommandText = "SELECT Qte_Disp FROM Disponibilite_Ressort WHERE Code-Composant LIKE '%" & Res1 & "%'" pour avoir les concordances avec le contenu de Res1 et d'autres caractères situés seulement AVANT et APRES (en d'autres termes le contenu de Res1 sera considéré comme pouvant être précédé OU/ET suivie d'autres caractères.

En espérant avoir été clair.

Calade
Commenter la réponse de Calade
Messages postés
37
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
7 mars 2013
0
Merci
Non ça n'as pas marché pour aucune solution, toujours la même erreure
Commenter la réponse de IrisTun
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Je ne comprends pas ton code (est-ce de l'ADO .NET ?).

D'un côté tu as :
Mycommand2.CommandText = "SELECT Qte_Disp FROM Disponibilite_Ressort WHERE Code-Composant LIKE " & Res1

et plus bas:
Dim myReader2 As OleDbDataReader = Mycommand2.ExecuteReader()

si l'instruction ci-dessus n'exécute pas la 1ère mais une requête Access, c'est elle que tu devrais donner, tu ne crois pas ?

Calade
Commenter la réponse de Calade
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
0
Merci
Bonjour,

J'ai le même code d'erreur (-2147217904 (80040e10)) sur une requête exécuté vers Access depuis VB6.

En farfouillant sur MSDN ils disent que l'erreur doit venir d'un nom de colonne non présent. Or mes colonnes dans Access ont le même nom que celle de mon code...

Voici ma requête :

RS.Open ("SELECT Id_Equipement FROM T_EQUIPEMENT WHERE Nom_Equipement = " & T.EQ & ""), Connexion, adOpenKeyset, adLockOptimistic


Or lorsque j'enlève la condition Where la requête s'exécute sans problème. J'ai testé en remplaçant la variable T.Eq par la valeur mais ca ne change rien. J'ai testé le like ...Idem... Je ne comprend pas...
Commenter la réponse de Phalalis
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
0
Merci
Bon en continuant de farfouillé voici ce que j'ai trouvé (valable pour moi je ne sais pas si ce sera valable pour tout le monde )

Ma variable T.Eq est une chaine de caractère...donc en SQL toute chaine doit être encadrée par des " "

Donc ma requête donne ca :

RS.Open ("SELECT Id_Equipement FROM T_EQUIPEMENT WHERE Nom_Equipement = """ & T.EQ & """"), BngConnexion, adOpenKeyset, adLockOptimistic


En espérant que cette solution marche aussi pour toi IrisTun.
Commenter la réponse de Phalalis
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
@ Phalalis,

Attention, en SQL une chaîne doit être encadré par une simple quote (') et non par des double-quotes (").

La langue anglaise n'emploie qu’extrêmement rarement les double-quotes.


Calade
Commenter la réponse de Calade
Messages postés
83
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
19 février 2012
0
Merci
Merci de ta remarque Calade

En effet en sql (sur un moteur tel que mysql ou SqlServer)l'utilisation du " " ne se fait pas
Maintenant j'ai précisé que cette solution était valable dans mon cas mais pas forcement pour lui...

Par contre il est vrai que j'ai oublié de précisé que ma connexion s'effectue vers une base Access a partir de VB6
Commenter la réponse de Phalalis
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
8
0
Merci
Le problème de quote/double quote est du SQL, donc totalement indépendant du langage de programmation (VB6/VBA/.NET).

De plus à ma connaissance, cela fait partie du tronc commun dit SQL92 auquel tous les langages SQL (MS SQLServer, MySql, Oracle, etc...) doivent se plier même s'ils rajoutent des fonctions propriétaires après.


Calade
Commenter la réponse de Calade