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 :

Gestion du Null en ASP.Net(VB) vers SQL


Sujet :

ASP.NET

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Février 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 1
    Par défaut Gestion du Null en ASP.Net(VB) vers SQL
    Bonjour à toutes et à tous.
    Accrochez-vous, c'est un peu compliqué à expliquer...
    Depuis mes pages je voudrais passer des arguments pouvant avoir la valeur "Null" à des fonctions (compilées dans une dll) appelant elles-même des Procédures stockées.

    exemple :
    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
    variable_retour = appel_fonction(var_1, var_2)
    
    Function appel_fonction (byval v1 as long, byval v2 as string) as string
    
    [...] (je vous passe les déclarations...)
    
    ParamfcVariable = Cmd.Parameters.Add("@v1", SqlDbType.Int)
    			ParamfcVariable.Direction = ParameterDirection.Input		
    			if isnothing(v1) Then
    				ParamfcVariable.Value = dbnull.value
    			else
    				ParamfcVariable.Value = v1	
    			end if			
    			
    			ParamfcVariable = Cmd.Parameters.Add("@v2", SqlDbType.VarChar, 255)
    			ParamfcVariable.Direction = ParameterDirection.Input		
    			if isnothing(v2) Then
    				ParamfcVariable.Value = dbnull.value
    			else
    				ParamfcVariable.Value = v2	
    			end if
    														
    			Dim dr As SqlDataReader = Cmd.ExecuteReader() 
    [...]
    Afin de pouvoir passer des valeurs "NULL" je set mes variables à "Nothing", et pour être sur qu'elles le soient réellement j'affecte la valeur dbnull.value aux paramètres si ceux -ci remplissent la condition isnothing...
    Jusque là tout semble opérationnel si ce n'est que, autant le varchar prend bien la valeur "NULL" en s'exécutant dans la requête, le numerique, ici un INT, passe systématiquement à 0 et non pas à la valeur "NULL" et ce malgré l'affectation dbnull.value au paramètre...
    Suis-je assez clair ?
    Mon souci est que si je veux tester une valeur "NULL" en base pour l'argument numérique je ne remplis plus ma condition en lui passant 0...
    une solution ?...

    Merci par avance.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut
    Ne t'inquiètes pas c'est pas si dur de te comprendre, tu as très bien exprimé ton problème, on devrait pouvoir t'aider

    Oui il faut savoir que certains types d'objets ne connaissent pas la valeur NULL du fait qu'elle ne peut exister dans leur logique d'existance. Un nombre ne peut être NULL car dans la logique NULL + 3 = ???

    Mais il existe le type Nullable<Int32> qui lui te permet d'avoir NULL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim a As Nullable<Int32> = null;
    if a == null then
       MessageBox.Show("Je suis NULL")
    else
       MessageBox.Show("Me serais-je trompé ? :-S");
    endif
    Dis moi si cela est bien ce que tu souhaites

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Comme le dit D4rkTiger, il est ici question des types Nullable.

    Pour faire simple, tu dois différencier les types valeur (integer, boolean,etc.) et les types référence (string, etc.).
    Les types référence sont nullable. Ils acceptent la valeur Null.
    Les types valeur ne le sont pas. Pour pallier à ce problème il te faut utiliser des Nullable types.

    Un peu de lecture sur le sujet ici.

Discussions similaires

  1. Recherche Script Gestion User simple en Asp.NET C#
    Par xnagamer dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/04/2008, 13h58
  2. Gestion des Roles en ASP.NET
    Par akli2008 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 08/04/2008, 14h23
  3. asp.net export vers excel 2003
    Par splach dans le forum ASP
    Réponses: 2
    Dernier message: 19/03/2008, 12h27
  4. Différences entre ASP et ASP.NET ? (lien vers une adresse mail)
    Par Paul Van Walleghem dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/11/2007, 17h22
  5. Réponses: 1
    Dernier message: 25/07/2007, 15h45

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