Convertir une "String" en valeur "numeric"
Bonjour,
Je travail avec ASP.NET et Visual Basic (VB).
Voici mon problème :
J'ai un GridView qui a un nombre x de rows, dans chacune des rows, il y a des cells comportant des controles (textbox, label et autre).
À l'enregistrement des données, j'ai créer une boucle for qui passe dans chacune des rows et insert chacune d'elle dans ma BD. Si tous les champs sont rempli, il n'y a aucun problème. Cependant, si je laisse des textbox vide, alors qu'il devrait contenir des valeur NUMERIC, j'ai l'erreur suivante "Error converting data type nvarchar to numeric." Ce qui est normal... parce que, comme je suis dans une boucle for, j'ai du initialiser mes New SqlParameter en haut de ma boucle et une fois dans celle-ci je mets, mes données dans chacun de ceux-ci. Mais, puisque la vérifications DBNull.Value, ce fait avant que j'y met les données, il met des "" comme valeur à mes champs numérique vide. Donc, il croit que j'essaye de lui passer une string.
J'ai essayer un truc, le voici :
Une fois les données passé, j'ai faite une vérification
si (textbox.text = "")
textbox.text = Nothing (sa marche pas)
textbox.text = 0 (Je ne veux pas mettre de 0, je veux que sa reste NULL)
Je ne sais donc pas comment mettre ma valeur à vide lorsque c'est un numérique...
Voici mon code :
conn = connection
cmd = new sqlCommand
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
|
...
-- Jinitialise mes parameter --
Dim TraCode As String
Dim Param_TraNom As New SqlParameter("@TraNom", "") : cmd.Parameters.Add(Param_TraNom)
Dim Param_TraCode As New SqlParameter("@TraCode", "") : cmd.Parameters.Add(Param_TraCode)
Dim Param_FamCode As New SqlParameter("@FamCode", "") : cmd.Parameters.Add(Param_FamCode)
Dim Param_CTUQuantite As New SqlParameter("@CTUQuantite", DBNull.Value) : cmd.Parameters.Add(Param_CTUQuantite)
Dim Param_CTUTaux As New SqlParameter("@CTUTaux", DBNull.Value) : cmd.Parameters.Add(Param_CTUTaux)
Dim Param_CTUMontant As New SqlParameter("@CTUMontant", DBNull.Value) : cmd.Parameters.Add(Param_CTUMontant)
Dim Param_TravauxNo As New SqlParameter("@TravauxNo", "") : cmd.Parameters.Add(Param_TravauxNo)
-- Je boucle dans mes rows --
For i As Integer = 0 To Grid_NatTravaux.Rows.Count - 1
Dim TraNom As Label = TryCast(Grid_NatTravaux.Rows(i).Cells(0).FindControl("lbl_TraNom"), Label)
...
Dim FamCode As HiddenField = TryCast(Grid_NatTravaux.Rows(i).Cells(0).FindControl("Htxt_FamCode"), HiddenField)
Dim TravauxNo As HiddenField = TryCast(Grid_NatTravaux.Rows(i).Cells(0).FindControl("Htxt_TravauxNo"), HiddenField)
Dim CTUQuantite As TextBox = TryCast(Grid_NatTravaux.Rows(i).Cells(1).FindControl("txt_CTUQuantite"), TextBox)
Dim CTUTaux As TextBox = TryCast(Grid_NatTravaux.Rows(i).Cells(3).FindControl("txt_CTUTaux"), TextBox)
Dim CTUMontant As TextBox = TryCast(Grid_NatTravaux.Rows(i).Cells(4).FindControl("txt_Montant"), TextBox)
cmd.CommandType = CommandType.Text
cmd.CommandText = "... Ma requete est ici ..."
cmd.Connection = conn
Param_TraCode.SqlValue = TraCode
Param_FamCode.SqlValue = FamCode.Value
Param_TravauxNo.SqlValue = TravauxNo.Value
Param_CTUQuantite.SqlValue = CTUQuantite.Text
Param_CTUTaux.SqlValue = CTUTaux.Text
Param_CTUMontant.SqlValue = CTUMontant.Text
.... |
Merci d'avance de votre aide.