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 : 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
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.