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 :

asp.net probleme executescalar


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 80
    Par défaut asp.net probleme executescalar
    Bonjour, je code en C#, asp.net et visual studio 2005.

    J'effecture un executescalar pour pouvoir récupérer une valeur dans ma base de donnée. Il me récupere bel et bien la valeur, mais lorsqu'il n'y a pas de valeur il m'indique une erreur "la référence dobjet nest pas défni à une instance d'un objet".

    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    requete2 = "Select L_Duree from temps_passe where N_tache="+numtache+" and D_temp_passe='"+date.ToShortDateString()+"' and N_collaborateur="+session.Num_Utilisateur;
            connection objconex3 = new connection();
            objconex3.command = new SqlCommand(requete2, objconex3.laconnection);
            decimal valeur_existante = 0;
            objconex3.seconnecter();
            valeur_existante=(decimal)objconex3.command.ExecuteScalar();            
            objconex3.déconnecter();
    connection est une classe que j'ai créé. J'aimerais que lorsque la base de donnée contien uen valeur, qu'elle soit récupéré dans valeur_existante (ca, ca fonctione trésbien) mais lorsqu'il n'y en na pas, que valeur_existante garde sa valeur 0. Ne plus avoir l'exception, l'erreur donc.

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select isnull(L_Duree,0) from temps_passe

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur_existante= Convert.ToDecimal(objconex3.command.ExecuteScalar());
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 80
    Par défaut
    j'ai utiliser le convert, merci beaucoup, ca fonctionne

  5. #5
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Il faut que tu test le retour de ExecuteScalar() avant de la caster en décimal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    requete2 = "Select L_Duree from temps_passe where N_tache="+numtache+" and D_temp_passe='"+date.ToShortDateString()+"' and N_collaborateur="+session.Num_Utilisateur;
            connection objconex3 = new connection();
            objconex3.command = new SqlCommand(requete2, objconex3.laconnection);
            decimal valeur_existante;
            objconex3.seconnecter();
            object objRetour = objconex3.command.ExecuteScalar();
            valeur_existante= objRetour == null ? 0 : (decimal)objRetour;        
            objconex3.déconnecter();

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par guitoux1
    Il faut que tu test le retour de ExecuteScalar() avant de la caster en décimal :
    ça fonctionne, mais c'est bien compliqué non ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    ça fonctionne, mais c'est bien compliqué non ?
    Ben je sais pas, je dirais que c'est normal. Vérifier qu'une variable n'est pas null avant de la caster.

    Mais oui effectivement, le Convert.ToDecimal() est plus "simple" (en fait, il est juste plus court à écrire), mais si tu regarde ce que fait Convert.ToDecimal(object value) tu veras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static decimal ToDecimal(object value)
    {
        if (value != null)
        {
            return ((IConvertible) value).ToDecimal(null);
        }
        return 0M;
    }
    Donc c'est exactement la même chose. C'est juste qu'en postant ma réponse, j'avais pas vu que t'avais déjà répondu

    (T'es trop rapide )

  8. #8
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par guitoux1
    Mais oui effectivement, le Convert.ToDecimal() est plus "simple"
    C'était juste pour être contrariant

    Citation Envoyé par guitoux1
    (T'es trop rapide )
    C'est ce que dit ma femme aussi
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  9. #9
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    C'est ce que dit ma femme aussi
    lol
    c'est pour ça que tu t'es mis à l'informatique

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par guitoux1
    c'est pour ça que tu t'es mis à l'informatique
    Non c'est parce que n'aime bien les nordinateurs
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/06/2011, 14h59
  2. Réponses: 2
    Dernier message: 27/04/2010, 23h46
  3. Réponses: 1
    Dernier message: 01/11/2009, 16h50
  4. datagrid asp.net probleme avec alt
    Par salsero1 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/02/2008, 10h55
  5. [ASP.NET] Probleme d'Inherits
    Par kedare dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/02/2007, 18h36

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