Probleme avec insert into

Signaler
Messages postés
31
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
30 mars 2011
-
Messages postés
31
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
30 mars 2011
-
Bonjour,

je ne comprend pas l'erreur, voici ma commande

string ReqAjoutLangue = " INSERT INTO Langue ( Nom, Pays )values('"+txtLangue.Text+"','(select pays.N° from pays where( pays.Nom= "+cbPays.SelectedItem.ToString()+"))')";

Pourquoi ne marche t'elle pas?

L'erreur: Type de données incompatible dans l'expression du critère.

nom est un string et Pays un entier

J'espere que quelqu'un voit où se situe le prob.

6 réponses

Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
6
Tu as besoin des apostrophes  apres le where non?

Utilise des requetes parametrees et tu n'auras pas ce genre de probleme.
Messages postés
31
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
30 mars 2011

c'est quoi des requete parametrées?
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
6
Recherche sur le site il y a quelque tutos
Messages postés
18
Date d'inscription
jeudi 8 mai 2003
Statut
Membre
Dernière intervention
27 mars 2009

Si tu as utilisé les propriétés DataSource, DisplayMember et ValueMember pour ta combo, tu peux écrire la requete suivante:
"INSERT INTO Langue (Nom, Pays) VALUES ( '"+txtLangue.Text+"', '"+cbPays.SelectedValue+"')";

Ca évite de faire un select dans un insert (Perso je suis pas fan).
Et tu utilises, comme WishhhMaster le dit, les requetes parametrées pour éviter les problèmes de guillemets et quotes.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
39
Salut.
Les requêtes paramétrées doivent effectivement simplifier ta requête.
En revanche, petit conseil : évite absolument les caractères spéciaux dans le nom de tes tables / champs / variables : "select pays.N°", il vaut mieux simplement appeler ton champ "Numero". Je te dis ça parce qu'un jour tu tomberas sur un langage qui n'acceptera par ça, ou un SGBD qui te dira simplement "Erreur dans la syntaxe SQL", et tu ne comprendras pas tout de suite pourquoi.
Autant prendre dès les début des bonnes habitudes ;)

Krimog :
while (!succeed = try()) ;
Messages postés
31
Date d'inscription
mardi 3 mars 2009
Statut
Membre
Dernière intervention
30 mars 2011

d'accord merci tout le monde, J'ai renommé mes N° en Id. Ma requete marche impec grace au oledbparameter.

Merci