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 :

Problème de 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 Problème de DBNull


    J'ai un problème dans le traitement des valeurs de type DBNull. J'ai peux tester ce que je veux, rien n'y fait...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    w.InsertText("InfosNomAggloAss", IIf(Not _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS = "", _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.ToString(), ""))
    ...
    w..InsertText("InfosNomAggloAss", IIf(Not _ds.V_INFOS_GENERALES.Item(0).IsNOM_AGGLO_ASSNull(), _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.ToString(), ""))
    ...
    w.InsertText("InfosNomAggloAss", IIf(Not _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS Is DBNull.Value(), _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.ToString(), ""))
    Y a-t-il une autre solution ? J'ai une quinzaine de lignes de ce genre à la suite et j'aimerais éviter de mettre un bloc Try pour chacune d'entre elles
    Le retour m'indique que mon champ est DBNull mais bon, c'est bien ce que je test quoi, c'est un peu débile leur histoire


    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
    Perso, j'ai aussi toutes les peines du monde à traiter les marqueurs NULL en .NET.

    Du coup, je m'arrange pour que mes requêtes ne renvoient JAMAIS de marqueurs NULL.

    Et alors tout est beaucoup plus simple

    Maintenant, je ne connais pas ton besoin ni ton process flow. Peut-être que ce n'est pas envisageable dans ton cas... (ce serait con )
    Kropernic

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    A une epoque j'avais fait un helper qui faisait un try catch bien degueux pour mutualiser ce genre de chose. Cela prenait une lambada en parametre et un second parametre qui definissait la valeur en cas de catch (j'ai plus les sources).

    a l'utilisation ca donnait un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    w.InsertText("InfosNomAggloAss", _ds.V_INFOS_GENERALES.Item(0).EvaluateOr(i=>i.NOM_AGGLO_ASS.ToString(), "")

    De plus, je crois que tu le sais mais le IIF en vbnet execute les deux cotes du if, donc utilisation a proscrire.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Je ne comprends pas le problème, je dois passer à coté de quelques choses mais je ne vois pas l’intérêt d'entourer ces lignes d'un try/catch la partie de test sur le DBNull ne peut pas générer d'exception, c'est d'ailleurs à mon sens le but de ce test.
    En tout cas je n'ai jamais eu de problème avec les DBNull, après il est vrai que tous mes champs en base sont not null (sauf les blob) mais je tests les champs DBNull pour par exemple savoir si une jointure a échoué.

    Sinon pour info (et que mon poste apporte quelque chose ) il existe Convert.IsDBNull

    J@ck
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    @J@ckHerror:
    le premier probleme vient du fonctionnement de la methode IIf elle meme:
    Because the IIf function does not use short-circuit evaluation, it always evaluates all three of its arguments.
    cf:https://msdn.microsoft.com/en-us/lib...or=-2147217396

    donc meme si t'as tester le dbnull dans la premier partie du iif, eh bien ceci sera evalue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.ToString()
    Donc oui la methode IIf est une plaie de vbnet

    Ensuite le second 'probleme' vient de la verbosite du truc, c'est hyper penible a copier colle ce genre de ligne.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Merci Mermich ,
    Je suis plus C# du coup les subtilités de IIf me sont inconnues, je pensais que le problème était sur la détection des champs DBNull.
    Sinon oui en effet c'est verbeux ... ! il faut tester tous les champs.

    Peux être qu'une méthode d’extension sur Object permettrait de rendre le test plus sexy. On passe en paramêtre la valeur par défaut si c'est DBNull.

    Quoique avec les type générique un truc comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            public static T GetValueOrDefaut<T>(this object me)
            {
                if (!Convert.IsDBNull(me))
                    return (T)me;
                else
                    return default(T);
            }
    devrait même être encore plus sexy
    Il faudra peut être renforcer les tests pour être sur que le transtypage ne plante pas, mais c'est déjà pas mal comme ça.

    Je vais le tester tiens ...

    J@ck.

    [EDIT] désolé c'est du c#
    le code VB equivalent doit pas être loin de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            <Extension()> 
    	Public Sub GetValueOrDefaut(Of T)(ByVal aObject As Object) As T
    		If not Convert.IsDBNull(aObject)
    			return  CType(aObject,T)
    		End If 
    			return CType(Nothing, T) 
    	End Sub
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Si tu concatène un chaine vide avec un chaine null tu as un chaine vide!
    "" + _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.ToString()

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    @rduRupt j'ai pas compris ton intervention !
    Nous ne parlons pas de chaine null mais de DBNull ici ! Je pense que tu es hors sujet.

    Sinon j'ai testé ma petite méthode d'extension et c'est formidable !
    Plus sérieusement c'est fonctionnel, je l'ai nommée autrement mais sinon elle est ok.

    Dans l'exemple donné par @Franck.H ça donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    w.InsertText("InfosNomAggloAss", _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.GetValueOrDefaut<string>())
    Bon week end et Joyeux Pâques

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    oui en effet je suis hors sujet! dessolé

  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


    Désolé pour le retard dans mes réponses... Effectivement, j'avais complètement oublié la particularité du IIf... Une méthode d'extension me paraît effectivement pas mal du tout, cela évite de mettre des conditions à tout va dans le code, du moins directement et ça rendra le code plus lisible, c'est que j'essayais de faire avec IIf

    Merci pour votre aide
    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
    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
    Au passage, je vous donne mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Imports System.Runtime.CompilerServices
     
    Module ExtensionMethods
        <Extension()>
        Public Function GetValueOrDefault(Of T)(ByVal o As Object) As T
            If Not Convert.IsDBNull(o) Then
                Return CType(o, T)
            End If
     
            Return CType(Nothing, T)
        End Function
    End Module
    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 !

  12. #12
    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
    Cela dit, j'ai tout de même un problème avec cette méthode d'extension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .InsertText("InfosNomAggloAss", _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.GetValueOrDefault<String>())
    Erreur 1 Le paramètre de type 'T' pour la méthode d'extension 'Public Function GetValueOrDefault(Of T)() As T' définie dans 'ExtensionMethods' ne peut pas être déduit.
    Erreur 2 'String' est un type classe et ne peut pas être utilisé en tant qu'expression.
    [EDIT]
    Correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .InsertText("InfosNomAggloAss", _ds.V_INFOS_GENERALES.Item(0).NOM_AGGLO_ASS.GetValueOrDefault(Of String)())
    C'est vu VB pas du C#... Le temps que je percute...
    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 !

  13. #13
    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
    Finalement, ça me déclenche tout de même une exception
    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 !

  14. #14
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Étrange ! qu'elle est l'exception ?
    Pour moi, en C#, je n'ai pas eu de problème, après vérification je ne convertie qu'en int pour le moment, mais je vois pas de raison que string ne passe pas...

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  15. #15
    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 J@ckHerror Voir le message
    Étrange ! qu'elle est l'exception ?
    Comme d'habitude...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La valeur pour la colonne 'NOM_AGGLO_ASS' dans la table 'V_INFOS_GENERALES' 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 !

  16. #16
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    ouep bizarre cette affaire.

    Je ferais des tests ce midi ou en début d'aprem...
    Au cas ou vous auriez déjà débuggé la méthode, si vous savez qu'elle ligne retourne l'exception et si on rentre ou pas dans la méthode d'extension dans le cas d'un DBNull (dans mon cas j'ai essayé et je rentre dedans même pour un DBNull)

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  17. #17
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Re,

    Je ne comprends pas , je me suis fais un petit programme de test vite fait et pas de problèmes avec les string
    Le problème vient peut-être de la traduction vers VB.net que je ne connais pas vraiment.

    Mon petit test =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    string ordre = "SELECT reference, Texte FROM TempMax";
     
    DataTable dt = SQLRequeteLibre.GetDataTable(ordre);
     
    foreach(DataRow r in dt.Rows)
    {
        Console.WriteLine("Res => {0}", r["Texte"].ParseDBNullValue<string>());
    }
    Console.ReadKey();
    Bien entendu dans le champs TempsMax.Texte j'ai des DBNull et des chaines.

    Et le code de l'extension =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static T ParseDBNullValue<T>(this object me)
    {
        if (!Convert.IsDBNull(me))
            return (T)me;
        else
            return default(T);
    }
    Pour le coup je pense pas pouvoir en dire beaucoup plus ne connaissant pas VB.net, en tout cas l'idée est là et c'est fonctionnel en C#.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  18. #18
    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 une question.

    Je comprends tout à fait l'intérêt à vouloir traiter les DBNULL d'un point de vue académique (apprendre à faire les choses) et même plus simplement pour avoir la satisfaction d'avoir réussi à franchir l'obstacle mais ne serait-il pas plus simple, à condition que ce soit une requête propre au projet et pas une utilisée par d'autres applicatifs, de faire en sorte de "supprimer" les DBNULL du résultat ?

    Je veux dire, un DBNULL quand on attend un string, on va quand même afficher une chaîne vide. Du coup, pourquoi ne pas laisser faire le SGDB qui fait ça beaucoup mieux que .NET à l'aide d'un simple COALESCE ? En plus, j'me demande même si ce ne serait pas plus performant (juste une intuition, aucun vrai argument là-dessus par contre).
    Kropernic

  19. #19
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour Kropernic,

    Personnellement, et comme dit plus haut, tous mes champs sont not null, et si j'ai un null c'est qu'une jointure (left outer) a échouée.
    Cela restant assez rare toutefois.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  20. #20
    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 J@ckHerror Voir le message
    Bonjour Kropernic,

    Personnellement, et comme dit plus haut, tous mes champs sont not null, et si j'ai un null c'est qu'une jointure (left outer) a échouée.
    Cela restant assez rare toutefois.

    J@ck.

    Oui oui j'ai bien compris. Et le fait que toutes tes colonnes (en DB, ce ne sont pas des champs mais des lignes et des colonnes) soient NOT NULL est un bon signe quant à la normalisation que tu appliques à tes DB.
    Après, bien sûr qu'une jointure externe (que soit LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN) peut apporter des marqueurs NULL dans un résultat. Heureusement d'ailleurs. Mais ça n'empêche que personnellement, plutôt que de me faire ch*** avec .NET (d'ailleurs, dans un dataset, dès qu'il y a un NULL, ça gueule rien que lorsqu'on essaie de le remplir), je travaille à la source où ça va très vite puisqu'il suffit d'un coalesce avec toute la brochette de paramètres qu'on aurait envie de lui mettre.

    Bien sûr, c'est une convention qui m'est propre et que je fais appliquer où je bosse (en même temps, on est deux et c'est moi le chef pour les DB, ça aide^^). Ca simplifie directement les choses au niveau .NET. On affiche et c'est tout. Si c'est null. Bin on a directement le bon affichage.
    Kropernic

Discussions similaires

  1. Problème de passage d'une valeur DBNull.value à un WebService
    Par feanor91 dans le forum Services Web
    Réponses: 4
    Dernier message: 19/03/2014, 15h39
  2. probléme de conversion d'un DBnull
    Par cyriane dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/06/2012, 13h19
  3. Problème avec test valeur DBNull
    Par Tankian dans le forum C#
    Réponses: 2
    Dernier message: 09/12/2010, 14h55
  4. problème de dbnull
    Par asprog dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/06/2009, 14h44
  5. Dataset et DateTime : problème de DBNull
    Par tatayet_le_felee dans le forum C#
    Réponses: 4
    Dernier message: 09/12/2008, 09h17

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