IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Convertir une "String" en valeur "numeric"


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations forums :
    Inscription : Août 2013
    Messages : 9
    Par défaut 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 : 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.

  2. #2
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Un DBNULL.Value devrait faire l'affaire, encore faut il que ton champ de base de données soit configuration pour accepter les valeurs NULL

  3. #3
    Membre habitué
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations forums :
    Inscription : Août 2013
    Messages : 9
    Par défaut
    Merci de ta réponse, mais je l'insert ou et comment ?

    Quand je vais chercher la donnée et que je la met dans la variable ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim CTUQuantite As TextBox = TryCast(Grid_NatTravaux.Rows(i).Cells(1).FindControl("txt_CTUQuantite"), TextBox)
    Ou

    Quand je récupère la variable dans un paramètre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Param_CTUQuantite.SqlValue = CTUQuantite.Text
    et j'écris le tout comment ?

    Merci d'avance

  4. #4
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    je donne en c# car je ne fais pas de vb.
    Au moment de l'insert et/ou update en db faut tester la valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!string.isnullorEmpty(matextbox))
        cmd.parameter.add("@navariable",matextbox)
    else
        cmd.parameter.add("@navariable",DBNULL.Value)
    et pareil quand tu cherches la valeur en DB pour la remettre dans la textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!string.isnullorempty(reader["monchamp"].tostring()))
        matextbox.Text = reader["monchamp"].tostring()
    else
        matextbox.Text = "";

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/08/2007, 14h52
  2. Réponses: 2
    Dernier message: 10/04/2007, 12h39
  3. [FAQ]Comment convertir une std::string en AnsiString ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/11/2006, 18h08
  4. Comment convertir une variable string en double?
    Par quentinoux dans le forum C++
    Réponses: 12
    Dernier message: 31/07/2006, 10h46
  5. Réponses: 6
    Dernier message: 14/02/2004, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo