Probleme d'INSERT en vs2005

Résolu
ghostleretour Messages postés 20 Date d'inscription dimanche 26 octobre 2003 Statut Membre Dernière intervention 12 août 2009 - 17 nov. 2008 à 02:04
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 17 nov. 2008 à 18:45
Bonsoir à tous,

Ce petit message HELP car je tourne en rond depuis des heures sur le net et je ne trouve pas de solution à mon probleme.

Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll
Informations supplémentaires : Aucune valeur donnée pour un ou plusieurs des paramètres requis.
à la ligne avec le (*)

this->connection->Open();
(*)System::Data::OleDb::OleDbCommand^ requete = (gcnew System::Data::OleDb::OleDbCommand("INSERT INTO cycliste VALUES(``,`"+TxtNomCycliste->Text+"`,`"+TxtPrenomCycliste->Text+"`,`"+TxtAdresseCycliste->Text+"`,`"+cat1+"`,`"+cat2+"`,`"+cat3+"`,`"+cat4+"`,`"+prix+"`,`0`,`"+TxtNomCycliste->Text+"`,`0`)", this->connection));
requete->ExecuteNonQuery();
this->connection->Close();

Si je remplace les ` de ma requete par des ', il me dit :

Informations supplémentaires : Type de données incompatible dans l'expression du critère.

Si je ne met pas de ' aux champs numériques, sauf au premier bien sur puisque c'est un NumeroAuto donc je dois le laisser videil me dit toujours : Type de données incompatible dans l'expression du critère.

Pourriez vous me dire ou je me plante, car les messages d'erreurs de visual studio étant toujours très explicites, je sèche

Merci d'avance

3 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 nov. 2008 à 18:45
Tu as oublié de valider ??
Si ça fonctionne?
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
17 nov. 2008 à 10:54
Salut,
Quelles bases de données utilises-tu?
Si c'est mysql tu as un connecteur natif sur leur site et des exemples.

Ensuite quelle est la structure de ta taille?

Ensuite si tu as un champ auto il ne faut pas le mettre dans l'ordre insert.
Il est préférable de nommés les champs de l'ordre insert
INSERT INTO cycliste (champ1,champ2,...)values(" + ... +","+...)

En dernier il est préférable d'utiliser les requetes paramétrées pour les requetes sql.

Bon coding
0
ghostleretour Messages postés 20 Date d'inscription dimanche 26 octobre 2003 Statut Membre Dernière intervention 12 août 2009
17 nov. 2008 à 11:25
Salut et merci pour ta réponse.

J'utilise une BDD Access, car je dois pouvoir transporter mon projet (j'aurais préféré MySQL :p)

Voici la structure de la table utilisée :
id (numeroautto)
nom (texte)
prenom (texte)
adresse (texte)
cat1 (numérique)
cat2 (numérique)
cat3 (numérique)
cat4 (numérique)
prix (numérique)
paiement (numérique)
mdp (texte)
admin (numérique)

Je viens de modifier ma requete pour citer les champs comme préconisé de la facon suivante :

System::Data::OleDb::OleDbCommand^ requete = (gcnew System::Data::OleDb::OleDbCommand("INSERT INTO cycliste (id, nom, prenom, adresse, cat1, cat2, cat3, cat4, prix, paiement, mdp, admin) VALUES('','"+TxtNomCycliste->Text+"','"+TxtPrenomCycliste->Text+"','"+TxtAdresseCycliste->Text+"',"+cat1+","+cat2+","+cat3+","+cat4+","+prix+",0,'"+TxtNomCycliste->Text+"',0)", this->connection));

Mais comme je me doutais le message d'erreur reste le meme :
Type de données incompatible dans l'expression du critère.

J'ai donc tenté de supprimer le champ ID dans la "citation" et dans les données de cette facon :

System::Data::OleDb::OleDbCommand^ requete = (gcnew
System::Data::OleDb::OleDbCommand("INSERT INTO cycliste (nom,
prenom, adresse, cat1, cat2, cat3, cat4, prix, paiement, mdp, admin)
VALUES('"+TxtNomCycliste->Text+"','"+TxtPrenomCycliste->Text+"','"+TxtAdresseCycliste->Text+"',"+cat1+","+cat2+","+cat3+","+cat4+","+prix+",0,'"+TxtNomCycliste->Text+"',0)",
this->connection));

Et la... Tadaaaa lol
Ca fonctionne.

Bizard, mais ca doit etre du a access, en MySQL, j'ai toujours fais comme ça.

Merci pour le coup de pouce.
0
Rejoignez-nous