Est ce que tu sais faire du debuggage avec des points d'arrêt ?
Version imprimable
Oui je sait faire.
Pour en être sur, je vais te dire comment je fais :
on met un point marron(grace a la sourit) ou on souhaite que le point d'arret se fasse puis on va dans "déboguer" --> "pas à pas détaillé" par exemple.....
C'est bien ça ce que t'appelle :
merci d'avance!!Citation:
Est ce que tu sais faire du debuggage avec des points d'arrêt ?
Ben comme j'ai déja dit, il s'arrête au niveau de :et m'affiche :Code:SqlDataReader rader = command.ExecuteReader();
Je pense que le problème est au niveau de l'exécution de la requête. Est-ce qu'il faut mettre autre chose avant la requête ou après??Citation:
Une exception non gérée du type 'System.InvalidCastException' s'est produite dans system.data.dll
Informations supplémentaires : L'objet doit implémenter IConvertible.
Quand je glisse ma souris sur " NomClient" de la ligne :et il me dit la chose suivante : "NomClient = {System.Windows.Forms.ComboBox}Code:command.Parameters["@NomClt"].Value = NomClient;
T'as une idée car moi la je suis perdu, je vois pas du tout.
merci d'avance!!
NomClient c la ComboBox ?????
Il me semble qu'une combobox est une collection, donc si tu veux le faire passer pour un string ça ne va pas trop marcher. Il doit avoir un truc comme "Item" qui te renvoie l'élément, qui lui est de type Object, tu dois avoir la possibilité de faire dessus un ToString() ...
Je suis pas sure de ce que je dis maiss essaie de faire :
Vérifie qu'il te renvoie bien l'élément que tu veux ...Code:NomClient.Item.ToString()
"NomClient" est bien une combo.
Donc ce qui me donne :au lieu deCode:command.Parameters["@NomClt"].Value = NomClient.Items.ToString();
Certe il m'affiche plus l'erreur précédente mais il ne m'affiche quand même pas le statut du client choisit.Code:command.Parameters["@NomClt"].Value = NomClient;
merci d'avance!!
Ben d'après le code que tu as mis c normal, puisque tt ce que tu fais c'est de récuperer dans un string le statut ... Y a pas de magie, le code ne fait que ce que tu lui dis de faire :king:
value c'est une string ni plus ni moins ...Code:
1
2
3
4
5
6 string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); }
Ok mais alors comment puis-je faire s'il te plais car je vois pas torp là. ??
merci d'avance!!
ok. Je comprend mieux.
En fait c'est le code que tu ma mis qui ma perturbé car c'étais le même que moi enfin bref peu importe.
j'ai fais un truc mais ça fonctionne pas.
J'ai rajoutéCode:
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 SqlConnection connection; SqlCommand command; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI"); connection.Open(); string requete = ("SELECT C_STATUCLT FROM CLIENT WHERE CLIENT.C_NOMCLT= @NomClt"); command = new SqlCommand(requete,connection); command.Parameters.Add("@NomClt", SqlDbType.Char, 20); command.Parameters["@NomClt"].Value = NomClient.Items.ToString(); SqlDataReader rader = command.ExecuteReader(); try { while (rader.Read()) { string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatuClient.Items.ToString() = value; } } } catch(Exception ee) { MessageBox.Show(ee.Message); } finally { connection.Close(); }
Il m'affiche l'erreur suivante :Code:StatuClient.Items.ToString() = value;
merci d'avance!!Citation:
C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\NouvelleIntervention.cs(486): La partie gauche d'une assignation doit être une variable, une propriété ou un indexeur
Tu ne voudrais pas réfléchir un peu avant de faire n'importe quoi ?
Ce qui t'intéresse, c'est l'élément sélectionné du combobox non ? Hé bien utilise la propriété SelectedValue plutot que de faire une bidouille de type .Items.ToString() qui ne renvoie rien d'utile.
Ensuite qu'est ce que tu espères faire en affectant une String à la représentation textuelle d'une collection d'éléments ?
Je parle de cette instruction-là :Quel est le type de StatuClient ?Code:StatuClient.Items.ToString() = value;
Troisième chose à quoi ça te sert d'utiliser une combobox pour le nom du client ?
Ce qui m'interresse je l'ai dit mainte fois.
Je souhaite afficher le statut du client(choisi précédement dans ma combo client) dans ma Combo StatuClient.
Ensuite, je réfléchi et j'essaye de faire ce que je peux.
Par :je souhaite affecter le statut dans ma combo StatuClient.Code:StatuClient.Items.ToString() = value;
Puis, StatuClient correspond au nom de ma combo correspondant au statut du client.
Pour finir, ma combo NomClient me permet de sélectionner le nom du client souhaité parmi les nomsclient existants dans la base.
merci d'avance en espèrant avoir répondu a toute tes questions!!
Suis vraiment désolé de vous déranger mais la je vois vraiment pas comment faire pour faire ce dont rad_hass a dit tout t'a l'heure :J'en peu plus de me prendre la tête la dessus.... en plu j'ai une grosse migraine donc si vous pouviez m'aider ce serais cool.Citation:
Ben pour faire simple, tu veux afficher ton statut quelque part.
Eh ben tu prend ce quelque part et tu lui donne la valeur de ton statut ...
merci d'avance pour votre aide.
Non je le laisse en ComboBox car si le client existe pas, qu'on puisse choisir le statut du nouveau client.
voila je pense avoir répondu assez clairement a ta question.
P.S. : la question ici n'est pas : pourquoi une combo mais comment la remplir.
merci d'avance!! :lol:
voila.Code:
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 SqlConnection connection; SqlCommand command; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI"); connection.Open(); string requete = ("SELECT C_STATUCLT FROM CLIENT WHERE CLIENT.C_NOMCLT= @NomClt"); command = new SqlCommand(requete,connection); command.Parameters.Add("@NomClt", SqlDbType.Char, 20); command.Parameters["@NomClt"].Value = NomClient.Items.ToString(); SqlDataReader rader = command.ExecuteReader(); try { while (rader.Read()) { string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); // StatuClient.Items.ToString() = value; } } } catch(Exception ee) { MessageBox.Show(ee.Message); } finally { connection.Close(); }
J'ai pas trop avancé car je vois pas trop comment faire ce que rad_hass a dit un peu plus bas :Puis je fais autre chose en même temp pour m'avancer.Citation:
Ben pour faire simple, tu veux afficher ton statut quelque part.
Eh ben tu prend ce quelque part et tu lui donne la valeur de ton statut ...
merci d'avance!!
Je cite la MSDN :
http://msdn2.microsoft.com/fr-fr/lib...ox(VS.80).aspx
"Vous pouvez utiliser ces propriétés pour gérer l'élément actuellement sélectionné dans la liste, la propriété Text pour spécifier la chaîne affichée dans le champ d'édition, la propriété SelectedIndex pour obtenir ou définir l'élément en cours, et la propriété SelectedItem pour obtenir ou définir une référence à l'objet."
J'ai pas tout compris mais bon je vais y réfléchir et regarder ça calmement.
merci quand même!!
Cordialement.
Fais ceci :
Code:
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 SqlConnection connection; SqlCommand command; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI"); connection.Open(); string requete = ("SELECT C_STATUCLT FROM CLIENT WHERE CLIENT.C_NOMCLT= @NomClt"); command = new SqlCommand(requete,connection); command.Parameters.Add("@NomClt", SqlDbType.Char, 20); command.Parameters["@NomClt"].Value = NomClient.Items.ToString(); SqlDataReader rader = command.ExecuteReader(); try { while (rader.Read()) { string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatuClient.Items.Add(value); } } } catch(Exception ee) { MessageBox.Show(ee.Message); } finally { connection.Close(); }
Je viens d'essayer ce que tu ma donné mais le problème c'est que ça m'affiche toujours rien dans la combo StatuClient.
Je comprend plus du tout comment faire.
aidez-moi s'il vous plais.
Dis nous tu exécutes ce code là derriere quel évenement?
Derrière la combo NomClient.
pourquoi?? je devrais l'exécuter derrière quel événement d'après toi??
merci d'avance!!
tu veux afficher le statut du client sélectionné alors tu devras exécuter ce code juste après qu'on ait choisit un client et a chaque fois!
Ben le combo NomClient est rempli lorsque j'ouvre la fenêtre.
Donc pour ça que j'ai mit mon code lors de l'exécution de la combo NomClient car cette combo elle est rempli.
Sinon je vois pas ou le mettre d'autre pars.
merci d'avance!!
Ta combo client etant deja remplie je suppose qu'il y a un nom de client sélectionné; il faut donc en meme temps charger la combo statut pour afficher le statut du client. Mets le code alors là où tu charges la combo client et aussi derriere l'evenement SelectedIndexChange de ta combo client
comme celà chaque fois qu'on change de client il affiche le statut qui lui correspond
Bonjour,
Je viens de mettre mon code ou je charge la combo client mais c'est toujours pareils c'est à dire que le statut ne s'affiche pas.
Je vois pas pourquoi.
Est-ce le code ou est-ce autre chose?? !!
Fais une éxécution pas à pas de ton code et vois les résultats que celà renvoit (mets un breakpoint)
voici le code suivant :
Donc j'ai fais un point d'arrêt sur :Code:
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 .... connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI"); connection.Open(); string requete = ("SELECT C_STATUCLT FROM CLIENT WHERE CLIENT.C_NOMCLT= @NomClt"); command = new SqlCommand(requete,connection); command.Parameters.Add("@NomClt", SqlDbType.Char, 20); command.Parameters["@NomClt"].Value = NomClient.Items.ToString(); rader = command.ExecuteReader(); try { while (rader.Read()) { string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatutClient.Items.Add(value); } } } catch(Exception ee) { MessageBox.Show(ee.Message); } finally { connection.Close(); }
et que je fais un espion sur " SqlDbType.Char " alors il me dit la chose suivante :Code:command.Parameters.Add("@NomClt", SqlDbType.Char, 20);
mais si je fais l'espion sur : " SqlDbType.Char, 20 ", il m'affiche 20.Citation:
SqlDbType.Char erreur*: l'identificateur 'SqlDbType' est hors de portée
Par contre, si je met des points d'arrêt sur :il n'y va pas c'est à dire qu'il se stop sur :Code:
1
2
3
4
5
6 string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatutClient.Items.Add(value);
je vois pas quoi te dire de plus.Code:while (rader.Read())
merci d'avance!!
Tu veux que je t'envoye ma base SqlServer (enfin la structure) + l'application pour que tu opére mieux le problème??
Cordialement.
Tu veux dire qu'il ne rentre pas dans ceci :
Si non c'est normal qu'il ne remplisse pas la combo statut parce que c'estCode:
1
2
3
4
5
6 if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatutClient.Items.Add(value); }
qui remplit en réalité la comboCode:
1
2 StatutClient.Items.Add(value);
Voila tout à fais, j'ai pas l'impression qui rentre dansmais il me dit rien du tout, donc je ne sais pas pourquoi.Code:
1
2
3
4
5
6 if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatutClient.Items.Add(value); }
merci d'avance!!
Par contre si je retire le, et que je met un point d'arrêt surCode:if (rader.IsDBNull(0) == false)
cela ne fonctionne toujours pas.Code:
1
2 value = rader["C_STATUCLT"].ToString(); StatutClient.Items.Add(value);
Je comprend vraiment pas comment cela se fait-il.
merci d'avance!!
Il ne renvoit pas d'erreur?
Si non mets un point d'arrêt sur
et voit la valeur de "value".Code:value = rader["C_STATUCLT"].ToString();
Lorsque je fais un point d'arrêt sur :il se passe rien c'est a dire qu'il ne s'arrête pas dessus.Code:value = rader["C_STATUCLT"].ToString();
Donc quand je glisse ma souris sur le "value" il me dit : "(variable locale)string value"
C tout.
Je comprend vraiment rien là.
Est ce qu'il rentre dans le While ?
Code:
1
2
3
4
5
6
7
8
9
10 while (rader.Read()) { string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatutClient.Items.Add(value); } }
Non, il s'arrête au While.
Lorsque je glissa ma souris sur le 'Read()' deil me dit queCode:while(rader.Read())
Donc j'en déduis qu'il ne rentre pas plus dans le While.Citation:
rader.Read=rader.Read+0//method+offset
merci d'avance!!!
Il y a quelque chose que je ne comprend pas.
Lorsque je test mon application, il arrive aau While.... et ensuite il me demande de remplir le NomClient. Il devrais me le demander avant : la preuve avec le code :
Cordialement.Code:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 public NouvelleIntervention() { InitializeComponent(); SqlConnection connection; SqlCommand command; SqlDataReader rader; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI"); command = new SqlCommand("SELECT C_NOMCLT FROM CLIENT", connection); connection.Open(); try { rader = command.ExecuteReader(); try { while (rader.Read()) NomClient.Items.Add(Convert.ToString(rader["C_NOMCLT"])); } finally { rader.Close(); } } finally { connection.Close(); } StatuClient.Visible=true; NumClt.Visible=true; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI"); connection.Open(); string requete = ("SELECT C_STATUCLT FROM CLIENT WHERE CLIENT.C_NOMCLT= @NomClt"); command = new SqlCommand(requete,connection); command.Parameters.Add("@NomClt", SqlDbType.Char, 20); command.Parameters["@NomClt"].Value = NomClient.Items.ToString(); rader = command.ExecuteReader(); try { while (rader.Read()) { string value = null; // On part du principe que le champ à l'index 0 est de type char dans la base if (rader.IsDBNull(0) == false) { value = rader["C_STATUCLT"].ToString(); StatutClient.Items.Add(value); } } } catch(Exception ee) { MessageBox.Show(ee.Message); } finally { connection.Close(); } }
Loic V.
Voila je vois vraiment pas comment régler mon prblème donc je vous envoi ci-joint un lien ou se situe mon projet : http://dl.free.fr/alvqTWEY5/Nouveaudossier.rar
Le fichier .sql correspond a ma base SqlServer2000.
Le dossier correspond a mon application. Mon problème se situe au niveau de la fenêtre s'intitulant 'NouvelleIntervention' puis le code se situe dans 'public NouvelleIntervention'.
A savoir, lorsque je fais la même chose (afficher le statut du client aprés avoir choisi le nomclient) avec une requête non paramétré, le code est le suivant :merci d'avance!!Code:
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 SqlCommand command; SqlConnection connection; SqlDataReader rader; // Code permettant d'afficher // le statut du client choisit connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI"); command = new SqlCommand("SELECT C_STATUCLT FROM CLIENT WHERE C_NOMCLT='" + NomClient.Text + "'", connection); connection.Open(); try { rader = command.ExecuteReader(); try { while (rader.Read()) StatutClient.Text = Convert.ToString(rader["C_STATUCLT"]); } finally { rader.Close(); } } finally { connection.Close(); }