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 "Null" et procédure stockée


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 56
    Par défaut Valeur "Null" et procédure stockée
    Bonsoir,

    J ài une procédure stocké dàns mà bàse (SQL Server). Dàns mon projet VB, je fàis àppel à cette procédure.
    Bon, le corps de là procédure est trés simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* déclàràtion ... @code comme pàràmétre*/
     
    Select * from produit where codproduit = isnull(@code, codproduit)
     
    /* ... */
    Quànd je fàis àppel à mà proc dàns VB, je pàsse là vàleur contenue dàns un text box et àppàràment, si le textbox est vide, le contenu est considéré comme '' et non pàs "Null". Je ne sàis pà exàctement c quoi le probléme màis mà procédure ne fonctionne pàs correctement.

    Merci de me die que fàire

  2. #2
    Membre confirmé
    Profil pro
    Ostéopathe
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ostéopathe

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Par défaut
    Salut

    Lorsque tu manipules les bases de données il faut bien faire la différence entre une valeur nulle et une valeur neutre.

    On a tendance à considérer pour les chiffres que 0 est la valeur nulle et pour le texte que '' est la valeur nulle.
    Le problème c'est que 0 et '' sont déjà des valeurs en elles mêmes : 0 est une valeur, et '' est une chaîne de caractère contenant 0 caractères. Dans les bases de donnée, la valeur Null signifie que rien du tout n'a été attribué à la variable, en gros qu'elle n'a pas été "initialisée" : aucune valeur ne lui a été définie.

    Pour en revenir à ton problème, la propriété Text d'une TextBox te renvoie TOUJOURS une string avec une valeur, la chaîne vide '' étant une valeur. Donc si tu passes à ta requête la propriété Text de ta TextBox tu ne passeras jamais la valeur Null.

    Il faut donc que tu ajoutes une condition avant l'appel de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If MaTextBox.Text = "" Then
        AppelDeLaRequete(DBNull.Value)
    Else
        AppelDeLaRequete(MaTextBox1.Text)
    End If
    Ainsi si la textbox est vide tu passes la valeur Nulle à la requête, sinon tu passes le contenu de la TextBox.

    Est-ce que ça te rend service ?

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 56
    Par défaut
    Citation Envoyé par mrtrampo Voir le message
    Salut

    Lorsque tu manipules les bases de données il faut bien faire la différence entre une valeur nulle et une valeur neutre.

    On a tendance à considérer pour les chiffres que 0 est la valeur nulle et pour le texte que '' est la valeur nulle.
    Le problème c'est que 0 et '' sont déjà des valeurs en elles mêmes : 0 est une valeur, et '' est une chaîne de caractère contenant 0 caractères. Dans les bases de donnée, la valeur Null signifie que rien du tout n'a été attribué à la variable, en gros qu'elle n'a pas été "initialisée" : aucune valeur ne lui a été définie.

    Pour en revenir à ton problème, la propriété Text d'une TextBox te renvoie TOUJOURS une string avec une valeur, la chaîne vide '' étant une valeur. Donc si tu passes à ta requête la propriété Text de ta TextBox tu ne passeras jamais la valeur Null.

    Il faut donc que tu ajoutes une condition avant l'appel de ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If MaTextBox.Text = "" Then
        AppelDeLaRequete(DBNull.Value)
    Else
        AppelDeLaRequete(MaTextBox1.Text)
    End If
    Ainsi si la textbox est vide tu passes la valeur Nulle à la requête, sinon tu passes le contenu de la TextBox.

    Est-ce que ça te rend service ?
    Merci bcp pour cette réponse si bien expliqué ^^

    Màis àu fàit, j y ài déjà pensé. màis quànd j utlisé le "DBNull.Value", Visuel me sort une erreur et me dit
    Impossible de convertir Char en DBNull.Value
    Sàchànt que les pàràmétres de mà proc sont déclàré comment étànt des vàrchàrs.

  4. #4
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If MaTextBox.Text = "" Then
        AppelDeLaRequete(DBNull.Value.ToString())
    Else
        AppelDeLaRequete(MaTextBox1.Text)
    End If
    ?

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Poste l'header de ta méthode "AppelDeLaRequete" car "Char?" cela ne sent pas très bon à la base et pas très logique comme paramètre d'entrée.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 56
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Poste l'header de ta méthode "AppelDeLaRequete" car "Char?" cela ne sent pas très bon à la base et pas très logique comme paramètre d'entrée.
    dans ma base le type est "varchar".
    dans visuel quand je met ma souris sur sur la méthode il affiche que le type demandé est char?.


    Mais bon, je suis un peu embarrassée la . J'ai trouvé ou est le probléme. On peut utilisé le "Nothing", pas la peine de mettre DBNull.value.

    Mon problème était dans ma requête.
    Merci à vous quand meme

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

Discussions similaires

  1. Récupérer des valeurs à l'aide d'une procédure stockée
    Par Contact2012 dans le forum Développement
    Réponses: 7
    Dernier message: 02/09/2008, 15h02
  2. [2000] Récupérer la valeur de retour d'une procédure stockée
    Par drinkmilk dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/08/2006, 09h46
  3. Valeur de retour d'une procédure stockée
    Par Rudyweb dans le forum MFC
    Réponses: 4
    Dernier message: 25/02/2005, 17h52

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