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 :

Tester un champs DBNull


Sujet :

VB.NET

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Tester un champs DBNull


    Je me retrouve devant un fonctionnement un peu absurde de la méthode IsDBNull() !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    If Not IsDBNull(_row.PACCHAMP) Then
                        _nrow("PACCHAMP") = _row.PACCHAMP
                    Else
                        _nrow("PACCHAMP") = String.Empty
                    End If
    Je ne peut pas faire comme ça car il me renvoie l'erreur IsDBNull alors que c'est justement le but du test, de le déterminer et de faire les choses en conséquence ! A moins que je l'utilise mal (franchement je vois pas) mais sinon cette méthode ne sert à rien !!!
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    Juste pour être sûr... Peut-on avoir le message d'erreur exact et complet ?
    Kropernic

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Hello,

    Juste pour être sûr... Peut-on avoir le message d'erreur exact et complet ?
    Si ça peut aider mais je pense que c'est évident...
    La valeur pour la colonne 'PACCHAMP' dans la table 'PE' est DBNull.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    La méthode IsDBNull attend un paramètre de type Object (ce que renvoie un principe un DataReader). Or on dirait que tu fournis un objet déjà typé _row.PACCHAMP. Ca peut venir de là, si tu confirmes que l'exception est de type StrongTypingException...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bah on ne sait jamais hein ^^.

    Du coup, je reste perplexe car tout m'a l'air ok...

    Sinon, comme solution de contournement, je vois l'utilisation de la fonction COALESCE dans votre requête pour renvoyer une chaîne vide puisque c'est de toute façon ce que vous voulez mettre à la place. Au revoir le DBNULL dans ce cas.

    EDIT : A force de faire 5 choses à la fois, je mets 15 minutes à répondre et me fait devancer par DotNetMatt ^^
    Kropernic

  6. #6
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    La méthode IsDBNull attend un paramètre de type Object (ce que renvoie un principe un DataReader). Or on dirait que tu fournis un objet déjà typé _row.PACCHAMP. Ca peut venir de là, si tu confirmes que l'exception est de type StrongTypingException...
    Un objet typé reste un objet non ???
    Kropernic

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Un objet typé reste un objet non ???
    Oui, mais DBNull et Nothing sont deux choses totalement différentes... DBNull est un type, une classe.

    Alors que Nothing est plutôt une valeur que l'on peut assigner. De même, il y a une différence entre Nothing en VB.NET et Null en C#... Quelques infos ici : Nothing (Visual Basic)
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour

    Peut etre ainsi je viens de tester chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim rec As OleDbDataReader
            rec = db.GetListNamePraticien
            While rec.Read
                If Convert.IsDBNull(rec.Item(2)) Then
     
                Else
     
                End If
            End While

  9. #9
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai jamais réussi à tester Dbnull avec VB.net. Chez moi, il génère toujours l'exception qui fait planter le programme avant de tester. Écoeuré de m'astiner (comme on dit chez-nous) avec le compilateur, je passe directement par un Try, sans test. C'est le try qui fait le test et je me sers du catch pour faire le traitement.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    Je n'ai jamais réussi à tester Dbnull avec VB.net. Chez moi, il génère toujours l'exception qui fait planter le programme avant de tester. Écoeuré de m'astiner (comme on dit chez-nous) avec le compilateur, je passe directement par un Try, sans test. C'est le try qui fait le test et je me sers du catch pour faire le traitement.
    Oui c'est une solution qu'on m'a donné et qui fonctionne, c'est un peu du bricolage mais bon pas le choix, je pense que c'est une des nombreuses choses que VB n'arrivera jamais à faire et c'est complètement nul
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bah personnellement, je n'ai jamais besoin de tester contre DBNULL car mes requêtes ne renvoient JAMAIS de marqueurs NULL.
    Kropernic

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/04/2006, 11h12
  2. [DREAMWEAVER 8] Comment tester les champs d'un formulaire
    Par steeves5 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 05/02/2006, 21h43
  3. ACCESS - tester un champs dans uen table
    Par chris9999 dans le forum Access
    Réponses: 1
    Dernier message: 16/10/2005, 19h11
  4. Tester si champs est vide
    Par clems34 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 19/09/2005, 20h53
  5. tester si champ vide
    Par trialrofr dans le forum ASP
    Réponses: 2
    Dernier message: 07/03/2005, 19h26

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