MBDA
Messages postés4Date d'inscriptionvendredi 10 avril 2009StatutMembreDernière intervention18 mai 2009
-
18 mai 2009 à 15:55
mikl31140
Messages postés2Date d'inscriptionlundi 8 juin 2009StatutMembreDernière intervention 8 juin 2009
-
8 juin 2009 à 12:21
Bon j'ai fait le tour du forum essayé plusieurs solution toute infructueuse apres venir honteusement poster ici mais je suis a bout ....
Le message d'erreur pour ce code si-dessous c'est (exemple le nom rentré est david dans la text box) :
Erreur[42000][Microsoft][ODBC SQL SERVER DRIVER][SQL serveur] Le nom "david" n'est pas autorisé dans ce contexte. Les expressions valides sont des constantes, des expressions constantes et (dans certains contextes) des variables. Les noms de colonnes ne sont pas autorisés.
}
catch (Exception ex)
{
MainForm.ShowException(ex, "raté");
}
}
Ce qui est en commentaire je l'ai trouvé sur le forum normalement c'est sensée déclarer des variables dans la base
est par exemple écrire la requête ainsi : INSERT INTO Tireur(nom,...) values (@nom,...)
Âpres exécution j'ai le droit a ce message d'erreur "@nom" n'est pas déclaré. Bref
Si quelqu'un a une idée je vous en prit je suis a bout d'idée et j'i ce projet a rendre pour lundi prochain et j'ai encore a faire un delete qui je sent bien va me poser probleme...
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 18 mai 2009 à 17:44
+1 ed73
En ce qui concerne les requêtes paramétrées, surtout n'hésite pas, c'est très très simple à utiliser et tu n'as pas à te soucier du format de ta variable. Tu as juste à dire s'il s'agit d'un entier, d'un float, d'un varchar, d'une date... et il va automatiquement transposer ta valeur comme il faut dans ta requête.
Pour les utiliser :
tu mets @UnNom dans ta requête ("SELECT * FROM table WHERE monChamp = @MonChamp")
Puis tu crées un OdbcParameter
avec comme Propriété ParameterName : "@MonChamp"
Value : ta valeur
OdbcType : OdbcType.TypeDeTaVariable
Et tu ajoutes ton paramètre à la collection Parameters de ta Command
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
et le message d'erreur est le suivant:
Msg 128, Niveau 15, État 1, Ligne 2
Le nom "ACP_PROSPECT" n'est pas autorisé dans ce contexte. Les expressions valides sont des constantes, des expressions constantes et (dans certains contextes) des variables. Les noms de colonnes ne sont pas autorisés.
Vous avez une idée?
(sachant que quand je doublie clique sur l'erreur: la ligne en rouge est selectionnée)
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 8 juin 2009 à 11:57
Bonjour,
Une requête INSERT basée sur un ordre SELECT ne se bati pas vraiment comme ça, mais plutot sous cette forme.
INSERT INTO [dbo].[TB_PRO_ACTIVITES_PROSPECT] (ACP_PROSPECT, ACP_ACTIVITES)
SELECT PRO_CLE, PRO_ACTIVITE
FROM TB_PRO_PROSPECTS
WHERE (PRO_ACTIVITE is not null)
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201548 8 juin 2009 à 12:05
Salut
Ta syntaxe est mauvaise.
Voici la syntaxe classique d'un insert :
insert into maTable (maCol1, maCol2) values (maVal1, maVal2);
Et celle d'un insert avec un select
insert into maTable1 (maCol1, maCol2) select maCol3, maCol4 from maTable2 where maCondition;
Donc en gros, tout ce que tu as à faire, c'est effacer le mot-clé values que tu ne dois mettre que pour précéder des valeurs que tu entres de façon manuelle (et non précéder les colonnes).
Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -