Probleme d'INSERT en vs2005 [Résolu]

ghostleretour 21 Messages postés dimanche 26 octobre 2003Date d'inscription 12 août 2009 Dernière intervention - 17 nov. 2008 à 02:04 - Dernière réponse : nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention
- 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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 17 nov. 2008 à 18:45
3
Merci
Tu as oublié de valider ??
Si ça fonctionne?

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de nhervagault
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 17 nov. 2008 à 10:54
0
Merci
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
Commenter la réponse de nhervagault
ghostleretour 21 Messages postés dimanche 26 octobre 2003Date d'inscription 12 août 2009 Dernière intervention - 17 nov. 2008 à 11:25
0
Merci
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.
Commenter la réponse de ghostleretour

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.