J'avais pas pensé mettre le code dans l'analyseur de requête de Sql Server 2000.
Et il me dit que l'instruction "Insert Into..." est trop long!! ça vient peut être de la??
merci d'avance!!
J'avais pas pensé mettre le code dans l'analyseur de requête de Sql Server 2000.
Et il me dit que l'instruction "Insert Into..." est trop long!! ça vient peut être de la??
merci d'avance!!
Bonjour,
Tout d'abord, merci pour tes conseils.
Je sais que C# est un langage POO et que j'ai des difficultées mais ché la vie!!
J'ai lu beaucoup de tuto, de cours.... mais j'ai toujours eu des difficulté mais suis arrivé ici, je ne vas pas laché comme ça!!
cordialement.
Vérifie bien, que ce que tu essaie d'insérer ont les mêmes types que dans la bases de données ...
dans ton Insert, il faut que tu lui donne comme parameters des types compatible (convertible) à ceux présent dans la base. (Tu as pas mis de textbox sans le .Text ect.).
Pour tester tu peux aller plus loin, en mettant des valeurs à la place de tes variables pour tester et savoir, si ça vient des parameteres ou d'ailleurs.
j'ai déja vérifié et je crois que c'est bon.dans ton Insert, il faut que tu lui donne comme parameters des types compatible (convertible) à ceux présent dans la base. (Tu as pas mis de textbox sans le .Text ect.).
J'ai remarqué que mon INSERT INTO était trop long donc ca vient peut être de la le problème??
Donc j'essai de voir comment je peux le réduire vu qu'il y a des champs qui ne peuve pas être égal à "Null". Si vous connaissez une façon de faire pour réduire la requête ou d'agrandir la longueur maximal autorisé??
Sinon je vien d'essayer avec des valeurs et cela fonctionne donc si je met les paramètre ma requête est trop longue.
merci d'avance!!
Ben lorsque je test mon code dans l'analyseur de requête en mettant :
il me dit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 SqlParameter paramNInter = new SqlParameter("@NumInter", SqlDbType.VarChar, 15); paramNInter.Value = NumIntervention.Text; SqlParameter paramNClt = new SqlParameter("@NumClt", SqlDbType.VarChar, 13); paramNClt.Value = NumClt.Text; SqlParameter paramNClt1 = new SqlParameter("@NumClt1", SqlDbType.VarChar, 13); paramNClt1.Value = NumClt.Text; SqlParameter paramNMat = new SqlParameter("@NumMachine", SqlDbType.Decimal, 13); paramNMat.Value = NumMachine.Text; SqlParameter paramResInter = new SqlParameter("@RaisonInter", SqlDbType.VarChar, 250); paramResInter.Value = RaisonInter.Text; SqlParameter paramLieInter = new SqlParameter("@LieInter", SqlDbType.Text); paramLieInter.Value = LieuInter.SelectedItem.ToString(); SqlParameter paramDepo = new SqlParameter("@Depositaire", SqlDbType.Char, 50); paramDepo.Value = Dépositaire.SelectedItem.ToString(); SqlParameter paramRecep = new SqlParameter("@Receptionneur", SqlDbType.Char, 20); paramRecep.Value = Réceptionneur.SelectedItem.ToString(); SqlParameter paramDPrisCharg = new SqlParameter("@DPrisCharg", SqlDbType.DateTime, 8); paramDPrisCharg.Value = DatePrisEnCharge; string sql = string.Format("INSERT INTO INTERVENTION(IN_NUMINTER, IN_NUMCLT, IN_M_NUMCLT, IN_IDMAT, IN_RESINTER, IN_LIEINTER, IN_DEPOMAT, IN_RECEPMAT, IN_PRICHARG) VALUES({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", paramNInter.ParameterName, paramNClt.ParameterName, paramNClt1.ParameterName, paramNMat.ParameterName, paramResInter.ParameterName, paramLieInter.ParameterName, paramDepo.ParameterName, paramRecep.ParameterName, paramDPrisCharg.ParameterName); SqlCommand cmd = new SqlCommand(sql.ToString(), connection); cmd.Parameters.Add(paramNInter); cmd.Parameters.Add(paramNClt); cmd.Parameters.Add(paramNClt1); cmd.Parameters.Add(paramNMat); cmd.Parameters.Add(paramResInter); cmd.Parameters.Add(paramLieInter); cmd.Parameters.Add(paramDepo); cmd.Parameters.Add(paramRecep); cmd.Parameters.Add(paramDPrisCharg);je trouve ça bizarre aussi mais bon.Serveur*: Msg 170, Niveau 15, État 1, Ligne 1
Ligne 1 : syntaxe incorrecte vers '='.
Serveur*: Msg 103, Niveau 15, État 1, Ligne 20
Le identificateur qui commence par 'INSERT INTO INTERVENTION(IN_NUMINTER, IN_NUMCLT, IN_M_NUMCLT, IN_IDMAT, IN_RESINTER, IN_LIEINTER, IN_DEPOMAT, IN_RECEPMAT, IN_PR' est trop long. La longueur maximale est 128.
Pour réduire une ligne de requete tu peux faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string requete = "mon_texte_qui_est_tres_long "" +"et_que_je_coupe_sur_une_autre_ligne";
Oui, faut que je me réveille ce matin!!LOL.
Mais si on lui fait :c'est à dire que j'ai changé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 SqlParameter paramNInter = new SqlParameter("@NumInter", SqlDbType.VarChar, 15); paramNInter.Value = '2008/02/19-002'; SqlParameter paramNClt = new SqlParameter("@NumClt", SqlDbType.VarChar, 13); paramNClt.Value = 'hf'; SqlParameter paramNClt1 = new SqlParameter("@NumClt1", SqlDbType.VarChar, 13); paramNClt1.Value = 'hf'; SqlParameter paramNMat = new SqlParameter("@NumMachine", SqlDbType.Decimal, 13); paramNMat.Value = '1'; SqlParameter paramResInter = new SqlParameter("@RaisonInter", SqlDbType.VarChar, 250); paramResInter.Value = 'graph'; SqlParameter paramLieInter = new SqlParameter("@LieInter", SqlDbType.Text); paramLieInter.Value = 'site'; SqlParameter paramDepo = new SqlParameter("@Depositaire", SqlDbType.Char, 50); paramDepo.Value = 'gr'; SqlParameter paramRecep = new SqlParameter("@Receptionneur", SqlDbType.Char, 20); paramRecep.Value = 'vivien'; SqlParameter paramDPrisCharg = new SqlParameter("@DPrisCharg", SqlDbType.DateTime, 8); paramDPrisCharg.Value = '19/02/2008'; string sql = string.Format("INSERT INTO INTERVENTION(IN_NUMINTER, IN_NUMCLT, IN_M_NUMCLT, IN_IDMAT, IN_RESINTER, IN_LIEINTER, IN_DEPOMAT, IN_RECEPMAT, IN_PRICHARG) VALUES({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", paramNInter.ParameterName, paramNClt.ParameterName, paramNClt1.ParameterName, paramNMat.ParameterName, paramResInter.ParameterName, paramLieInter.ParameterName, paramDepo.ParameterName, paramRecep.ParameterName, paramDPrisCharg.ParameterName); SqlCommand cmd = new SqlCommand(sql.ToString(), connection); cmd.Parameters.Add(paramNInter); cmd.Parameters.Add(paramNClt); cmd.Parameters.Add(paramNClt1); cmd.Parameters.Add(paramNMat); cmd.Parameters.Add(paramResInter); cmd.Parameters.Add(paramLieInter); cmd.Parameters.Add(paramDepo); cmd.Parameters.Add(paramRecep); cmd.Parameters.Add(paramDPrisCharg);en
Code : Sélectionner tout - Visualiser dans une fenêtre à part paramNClt.Value = NumClt.Text;mais toujours pareil.
Code : Sélectionner tout - Visualiser dans une fenêtre à part paramNClt.Value = 'hf';
Cette ligne c'est du C#, ni du SQL, ni un langage connu dans SQL Server ... Comme tt le reste du code ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part SqlParameter paramNInter = new SqlParameter("@NumInter", SqlDbType.VarChar, 15);
Les chaînes de caractère sont entre doubles quote en C#, pas entre simple quote.
Je pense qd meme que tu t'y prend mal pour faire ton insertion ...
D'abord, tt tes parametres sont de type string ce qui est à mon avis n'est pas normal, tu dois les convertir au bon type (par exemple IN_NUMINTER doit être de type int, non ? Si c'est le cas alors ton @NumInter doit être aussi du même type ...
Y a bcp de choses que tu dois voir, ce qui explique certains messages et conseils qui t'ont été donné ... Il est vrai qu'on apprend tjs, mais c plus simple qd on a les bases ... La t'essaie d'apprendre dans la douleur, je te dis bon courage
Ma base :
* IN_NUMINTER est bien de type varchar dans la base.
* IN_NUMCLT est de type varchar également.
* IN_IDMAT est de type int.
* IN_RESINTER est de type varchar.
* IN_LIEINTER est de type text.
* IN_DEPOMAT et IN_RECEPMAT est de type char.
* IN_PRICHARG est de type dateTime.
donc je crois par rapport a ce que l'on ma dit que mes SqlDbType sont bon.
Mon formulaire :
* 'NumIntervention' et un label
* 'NumClt' et 'NumMachine' et 'RaisonInter' sont des TextBox.
* 'LieuInter' et 'Dépositaire' et 'Réceptionneur' sont des ComboBox.
* 'DatePrisEnCharge' est un DateTimePicker.
merci a vous tous de bien vouloir prendre de votre temps pour m'aider.
Le numéro de machine est un int (IN_IDMAT) dans la base est ici tu lui donne un string ... Ca ne risque pas de marcher ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SqlParameter paramNMat = new SqlParameter("@NumMachine", SqlDbType.Decimal, 13); paramNMat.Value = NumMachine.Text;
Je suis désolé mais je voit pas trop ou tu vois que j'ai mit du string dans :J'ai mit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SqlParameter paramNMat = new SqlParameter("@NumMachine", SqlDbType.Decimal, 13); paramNMat.Value = NumMachine.Text;car NumMachine est une textBox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part paramNMat.Value = NumMachine.Text
merci d'avance!!
Oui, mais un TextBox.Text renvoie un string.
Pour avoir un int fais plutôt :
ATTENTION il faut absolument que le contenu de ton TextBox soit un chiffre sinon une exception sera levée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part paramNMat.Value = int.Parse(NumMachine.Text)
Mosco
Edit : Grilled![]()
réponse à rad_hass : Si j'ai regardé le .Value et ça me donné bien le Numéro de la machine.
réponse à MoscoBlade : J'avais déja modifiéen
Code : Sélectionner tout - Visualiser dans une fenêtre à part paramNMat.Value = NumMachine.Textmais c'est toujours pareil.
Code : Sélectionner tout - Visualiser dans une fenêtre à part paramNMat.Value = int.Parse(NumMachine.Text)
J'ai mitau lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part MessageBox.Show(string.Format("{0}{1}{2}",ex.Message, ex.StackTrace));et maintenant il m'affiche comme erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part MessageBox.Show(ex.Message);au lieu deUne exception non gérée du type 'System.FormatException' s'est produite dans mscorlib.dll
Informations supplémentaires*: L'index (de base zéro) doit être supérieur ou égal à zéro et inférieur à la taille de la liste des arguments.merci d'avance!!L'objet doit implémenter IConvertible
tu peux nous refaire voir ton code (la requête SQL).![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager