bonjour,
en fait quand je remplis ma table par fois je laisse des textbox vide car j'ai pas de valeur a saisir. j'ai un message d erreur;
mais une fois tout les textbox sonr remplis ca marche :?.Code:Input string was not in a correct format,
merci
Version imprimable
bonjour,
en fait quand je remplis ma table par fois je laisse des textbox vide car j'ai pas de valeur a saisir. j'ai un message d erreur;
mais une fois tout les textbox sonr remplis ca marche :?.Code:Input string was not in a correct format,
merci
Ton textbox est bindé, non ? Par exemple, si un textBox est bindé à une propriété de type int, tu auras cette erreur, parce qu'il est impossible de convertir une chaîne vide en valeur numérique.
mon textbox est type float.
Quel est la nature de l'objet métier auquel le TextBox est bindé ? Une DataTable ? Une propriété d'un objet à toi ?
Alors, il faut lui dire que qd la chaine est vide, il met 0 a la place...
surement ds l'evenement TextChanged.
c'est pour remplir une table donc une data table.Citation:
l'objet métier auquel le TextBox est bindé ? Une DataTable
je veux pas avoir 0 comme valeur par defaut. car ca me dérange dans un un calvul d'AverageCitation:
il faut lui dire que qd la chaine est vide, il met 0 a la place...
ma colonne est Nullable.
quand je fait le saisie dans ma base de donnée directement ca fonctionne mais avec des valeur null,
donc je pense qu'il faut que je rends mon textbox nullable c'est adire que quand c'est vide j'airai la valeur null par défaut..
fait ce que je t'ai dis mais a la place de mettre 0, tu met la valeur que tu veux...
Pour info, si ton textbox qui attent un float est nullable, ca sert a rien car le float ne peut pas etre null de tout facon.
Ce qu'il faut faire, c'est rentre le champs de ta classe nullable egalement comme ca je crois :
Code:private float? x;
j'avoue que ne comprends pas.. est ce que tu peux m expliquer plus stp:bug:
Si tu veux pouvoir avoir ton float a null, tu dois modifier l'attribut de ta classe comme ca :
Tu comprend pas quoi ?Code:private float? x;
merci,
mais le X? il me l'accepte pas...
est ce que je dois faire ca pour chaque textbox...
x? nan c'est float?. le nom de la variable ca doit rester "x". le point d'interrogation ca veut dire nullable. je pense que tu devrais acheter un livre et revoir les bases du C#. les types c'est la toute première leçon qu'importe le livre que tu prends :s et les types nullables nous sauvent la vie bien des fois :)
Vous pertubez Zakaroth, là :)
Si j'ai bien tout compris, il a une TextBox directement bindée à un champ d'une datatable. Pas de variable float ou float? entre les deux.
Le problème se résume à mon avis à savoir si l'on peut binder aisément une textbox à une colonne de DataTable nullable (nullable au sens Ado.net, pas au sens de la syntaxe "machin?" ajoutée avec .Net2). Jamais fait, donc je sais pas.
peut etre existe-il une constante genre DBNull, mais je connais pas donc je te laisse chercher :lol:
c'est exactement ca .Citation:
Si j'ai bien tout compris, il a une TextBox directement bindée à un champ d'une datatable. Pas de variable float ou float? entre les deux.
Le problème se résume à mon avis à savoir si l'on peut binder aisément une textbox à une colonne de DataTable nullable (nullable au sens Ado.net, pas au sens de la syntaxe
j'ai essayé avec ca
mais je toujours le même problem.Code:command.Parameters.Add(new SqlParameter("@Effort_dedicated_to_change_request", System.DBNull.Value));
merci
voila la solution si quelqu'un rencontre la même galére que moi..
:yaisse2:Code:
1
2
3
4
5
6
7
8 command.Parameters.Add(new SqlParameter("@test", SqlDbType.Float)); if(textBox1.Text != "") { command.Parameters["@test"].Value = double.Parse(textBox1.Text, System.Globalization.CultureInfo.InvariantCulture); } else command.Parameters["@test"].Value = System.DBNull.Value;
Euh, y'a pas de binding dans ton code...
je reprends : en fait, tu récupères les textes saisis dans des textbox, tu les castes dans des types numériques, puis tu affectes les valeurs ainsi obtenues à des paramètres d'un commande SQL ?
Mais fais gaffe à ton code : si jamais l'utilsateur écrit pas "1.5" dans ta textbox mais "bob", ton double.Parse va te renvoyer la même exception que celle que tu as montré dans ton premier post. Donc sois tu vérifies que les valeurs sont bien valides avant de lancer ta commande (avec la fonction TryParse par exemple), soit tu affectes DbNull à ton paramètre si Parse lève une exception.
sur tout mes textbox j'ai limité les carctére ils acceptent que des chifre (12365468790) est le. et ,.
donc t'utilises l'utilisateur a ecrire ".21222,.44.,4.2.,.,42..4,..4.,.4,4.4.4,4.."
Entre nous, si Float.Parse marche, chapeau. :lol: