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

VB.NET Discussion :

valeur vide (null)


Sujet :

VB.NET

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut valeur vide (null)
    bonjour
    j'ai pas trouvé une solution pour la deuxième cas le (else) bien sur elle m' affiche l'erreur suivant
    (Aucune ligne à la position 0.)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     If (dst.Tables("table").Rows(0).Item(0)) Then
        MsgBox("il y a un valeur de retour")
                Else
                     MsgBox("il n y a pas un valeur de retour")
                End If
    merci de m'aider

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    je te propose ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try
     If (dst.Tables("table").Rows(0).Item(0)) Then
        MsgBox("il y a un valeur de retour")
                Else
                     MsgBox("il n y a pas un valeur de retour")
       End If
     Catch ex As Exception
                MsgBox("il n y a pas un valeur de retour, puisqu'il n ya aucune ligne!!!")
      End Try

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    s'il n'y a pas de rows, rows.count vaut 0 c'est donc rows.count qu'il faut tester avant de lire la ligne y

    passer par une exception est une mauvaise idée, c'est très pénalisant niveau performances

    au passage ca n'a rien à voir avec null (nothing en vb.net)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    ok pol! à ton service!

    donc faisant un test sur les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    try
    If dst.Tables("table").rows.count -1 < 1 then
     MsgBox("il n y a pas de valeur de retour, puisqu'il n ya aucune  ligne!!!")
    exit sub
    end if 
       If (dst.Tables("table").Rows(0).Item(0)) Then
        MsgBox("il y a de valeur de retour")
                Else
                     MsgBox("il n y a pas de valeur de retour")
       End If
     Catch ex As Exception
               msgbox(ex.message)
      End Try

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    try
    If dst.Tables("table").rows.count = 0 then
     MsgBox("Aucune ligne!!!")
    exit sub
    end if 
       If (dst.Tables("table").Rows(0).Item(0)) Then
        MsgBox("il y a de valeur de retour")
                Else
                     MsgBox("il n y a pas de valeur de retour")
       End If
     Catch ex As Exception
               msgbox(ex.message)
      End Try

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    je préfère le = 0, parce que le -1 < 1 ca fait vraiment tordu
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    benoit!!!!!!!!!!!!!!!!
    soit n un nombre Naturel ensemble N
    si n <1 implique n=0


    au fait!!! le Compteur row d'un dataset debute par 0 ou 1?

  8. #8
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Vous vous compliquez la vie !!!

    Si l'objectif est uniquement de savoir s'il y a des (une ou plusieurs) lignes retournées par la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If dst.Tables(0).Rows.Count > 0 Then
        MsgBox("Il y a des lignes")
    Else
        MsgBox("Il n'y a pas de lignes")
    End IF
    Mais attention !!! Cela ne fonctionne que si le remplissage du dataset se passe sans souci. Si votre requête sql (par exemple) contient une erreur et plante, il n'y aura pas de table dans le dataset et donc dst.Tables(0) renverra une erreur.

    Pour contourner cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If dst.Tables.Count > 0 AndAlso dst.Tables(0).Rows.Count > 0 Then
        MsgBox("Il y a des lignes")
    Else
        MsgBox("Il n'y a pas de lignes")
    End IF
    Dans ce cas, le membre à droite de l'opérateur AndAlso ne sera évalué que si le membre de gauche est vérifié. J'insiste sur l'opérateur AndAlso. Un simple And provoquerait un plantage en cas de dataset vide.

    Griftou.

  9. #9
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Citation Envoyé par getule Voir le message
    benoit!!!!!!!!!!!!!!!!
    soit n un nombre Naturel ensemble N
    si n <1 implique n=0
    FAUX !!! N pourrait être négatif !! (pas dans le cas qui nous occupe mais sur ce que vous écrivez, votre equivalence n'est pas correcte...)

  10. #10
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par griftou Voir le message
    FAUX !!! N pourrait être négatif !! (pas dans le cas qui nous occupe mais sur ce que vous écrivez, votre equivalence n'est pas correcte...)

    faux
    il parle d'un entier naturel, un entier naturel ne peut pas être négatif

    néanmoins rows doit être de type integer donc négatif possible
    d'ailleurs certaines fonctions du framework retourne -1 pour faire une distinction par rapport à 0


    @getule
    les indexes en vb.net commencent à 0
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    mon n à moi ne peut etre négatif! le tien peut etre!
    enfin!

  12. #12
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    voila pol
    les index débutent par zero
    donc rows.count=0 veut dire qu'in y a une ligne
    c'est pour cela que j'ai mis rows.count -1 =0 ou <1

  13. #13
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    je me suis emballé sorry...

    Les nombres négatifs me paraissent naturels mais c'est vrai qu'on apprend à l'école qu'ils ne le sont pas...

    Méa culpa, méa maxima culpa...

    (et dire que j'avais hésité à poster ce message car ça n'apportait rien de constructif au sujet... j'aurais mieux fait de suivre mon instinct^^)

  14. #14
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par getule Voir le message
    voila pol
    les index débutent par zero
    donc rows.count=0 veut dire qu'in y a une ligne
    c'est pour cela que j'ai mis rows.count -1 =0 ou <1
    concernant rows.count, il ne peut pas être négatif
    néanmoins tu as bien raison de faire < 1 car c'est moins buggable que des certitudes, et dans certains c'est même nécessaire
    (on peut tout de même lui préférer <= 0 )
    pour expliciter, si on fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if count = 0 then message + exit sub
    traitement car count > 0
    le cas où count < 0 n'est pas géré, le code n'est donc pas sûr

    c'est comme pour un select case, sur un truc qu'on pense avoir 2 possibilités (genre une enum qu'on a écrit)
    il est conseillé d'écrire
    case else
    throw new applicationexception ("valeur non prévue : " & valeur)

    à un instant T le case else ne peut pas arriver, mais des mois après avec des évolutions de code on sera bien content de trouver tout de suite le problème à la source avec le détail
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2006
    Messages : 128
    Par défaut
    j'espere qu'on a pas compliqué la vie à celui qui a posé le probleme!

    allez ciao

  16. #16
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Citation Envoyé par getule Voir le message
    voila pol
    les index débutent par zero
    donc rows.count=0 veut dire qu'in y a une ligne
    c'est pour cela que j'ai mis rows.count -1 =0 ou <1
    Les index débutent bien de 0, mais dans le cas d'un Count, ça part de 1...

  17. #17
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par Shadam Voir le message
    Les index débutent bien de 0, mais dans le cas d'un Count, ça part de 1...

    !?
    count n'est pas un index de tableau, c'est le nombre d'objet d'une collection
    il peut donc valoir 0 si aucun objet n'est contenu dans la collection
    pour parcourir une collection indexée, on fait for i as integer = 0 to collection.count - 1
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  18. #18
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    !?
    Citation Envoyé par Pol63 Voir le message
    for each i as integer = 0 to collection.count - 1
    For each avec "i = 0 to collection.count" ?

    Et ce que veut probablement dire Shadam c'est que si count est inférieur à 1 tu ne rentreras pas dans le for.
    Donc tu rentres dedans à partir d'un count = 1.

  19. #19
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Par défaut
    Citation Envoyé par asmduty Voir le message
    !?


    For each avec "i = 0 to collection.count" ?

    Et ce que veut probablement dire Shadam c'est que si count est inférieur à 1 tu ne rentreras pas dans le for.
    Donc tu rentres dedans à partir d'un count = 1.
    Tout à fait mon cher asmduty

Discussions similaires

  1. Valeur vide / NULL dans un champ de type numérique
    Par Esab75 dans le forum Débuter
    Réponses: 2
    Dernier message: 02/09/2010, 11h44
  2. Réponses: 16
    Dernier message: 21/08/2008, 13h58
  3. [SQL] affecter la valeur SQL NULL si la variable est vide
    Par marie4449 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/03/2007, 18h44
  4. Réponses: 2
    Dernier message: 14/02/2007, 16h22
  5. [INSERT / UPDATE] Remplacer une valeur vide par NULL
    Par jissay dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 28/09/2006, 14h15

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