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

Windows Forms Discussion :

Problème de passage de paramètres [Débutant]


Sujet :

Windows Forms

  1. #1
    Membre expert
    Avatar de Chauve souris
    Homme Profil pro
    amateur (éclairé ?)
    Inscrit en
    Novembre 2005
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Paraguay

    Informations professionnelles :
    Activité : amateur (éclairé ?)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 186
    Points : 3 086
    Points
    3 086
    Par défaut Problème de passage de paramètres
    Je continue mon apprentissage laborieux avec les Windows Forms et SQL Server. Il est vrai que, jusque là, je me servais d'Access comme frontal ce qui était simple et efficace.

    Voilà mon actuel problème :

    J'ai fait une procédure stockée dans SQL Server. Pas de souci. Ce que je voulais c'est qu'elle utilise deux paramètres prénom et nom d'auteur, mais qu'elle puisse retourner la sélection même si le prénom est omis. Ci dessous le script SQL

    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
    25
    26
     
    CREATE PROCEDURE dbo.Proc_Ouvrages_par_auteur
    	@auteur_nom varchar(50) = NULL,
    	@auteur_prenom varchar(50) = NULL
    AS
    BEGIN
        SET NOCOUNT ON;
        SELECT Auteurs.Nom, Auteurs.Prénom, Ouvrages.Titre, 
        Ouvrages.[Sous-titre], Catégories.[Nom de la catégorie], 
        Editeurs.Nom AS Editeur, Collections.[Titre de collection]
    FROM Catégories INNER JOIN
        Auteurs INNER JOIN
        Editeurs INNER JOIN
        Collections ON 
        Editeurs.éditeurID = Collections.éditeurID INNER JOIN
        Ouvrages ON Editeurs.éditeurID = Ouvrages.éditeurID AND 
        Collections.collectionID = Ouvrages.collectionID ON 
        Auteurs.auteurID = Ouvrages.auteurID ON 
        Catégories.catégorieID = Ouvrages.catégorieID
    WHERE Auteurs.Nom = ISNULL(@auteur_nom, Auteurs.Nom) AND Auteurs.Prénom = ISNULL(@auteur_prenom, Auteurs.Prénom)
    GROUP BY Auteurs.Nom, Auteurs.Prénom, Ouvrages.Titre, 
        Ouvrages.[Sous-titre], Catégories.[Nom de la catégorie], 
        Editeurs.Nom, Collections.[Titre de collection]
    RETURN
    END
    GO
    Je peux donc l'exécuter en ne passant que le seul nom d'auteur.

    Le problème est que quand je l'utilise dans un Windows Form le ToolStripButton avec son code généré automatiquement, s'il fonctionne très bien quand je renseigne prénom et nom dans les textBox, eux aussi générés automatiquement, ne me retourne rien dans le dataGridView si je renseigne seulement nom.

    Ci dessous le code du fillToolStripButton_Click

    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
     
    private void fillToolStripButton_Click(object sender, EventArgs e)
            {
                try
                {
                        this.proc_Ouvrages_par_auteurTableAdapter.Fill
                            (this.bibliWMDataSet.Proc_Ouvrages_par_auteur,
                            auteur_nomToolStripTextBox.Text,
                            auteur_prenomToolStripTextBox.Text);
                }
                catch (System.Exception ex)
                {
                    System.Windows.Forms.MessageBox.Show(ex.Message);
                }
            }
    Et je ne vois pas trop ce que je peux faire (exécutée depuis Visual Studio, la procédure stockée, avec le seul nom d'auteur, fonctionne bien).

    Je sollicite donc vos lumières.
    "Toute l'histoire de l'informatique n'a été que l'histoire des systèmes d'exploitations" (Le Manifeste du PC)

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Et si dans ta ps, tu faisais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND ((@auteur_prenom IS NULL) OR (Auteurs.Prénom= @auteur_prenom)) ...
    ?
    N'oubliez pas le tag et

  3. #3
    Membre expert
    Avatar de Chauve souris
    Homme Profil pro
    amateur (éclairé ?)
    Inscrit en
    Novembre 2005
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Paraguay

    Informations professionnelles :
    Activité : amateur (éclairé ?)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 186
    Points : 3 086
    Points
    3 086
    Par défaut
    Hélas non ! Pareil, renvoie zéro ligne.
    "Toute l'histoire de l'informatique n'a été que l'histoire des systèmes d'exploitations" (Le Manifeste du PC)

  4. #4
    Membre expert
    Avatar de Chauve souris
    Homme Profil pro
    amateur (éclairé ?)
    Inscrit en
    Novembre 2005
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Paraguay

    Informations professionnelles :
    Activité : amateur (éclairé ?)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 186
    Points : 3 086
    Points
    3 086
    Par défaut J'ai trouvé !
    La procédure stockée n'a rien à se reprocher, le problème vient du paramètre ToolStripTextBox.Text qui, contrairement à Access quand on ne fournit pas de contenu n'est pas NULL mais vide (""), ce qui n'est pas informatiquement la même chose. Ce qui oblige à utiliser deux fonctions de passage de paramètres puisqu'on ne peut utiliser un paramètre commun. La fonction ci-dessous opère parfaitement avec nom et prénom ou seulement nom.

    C'est donc résolu, mais si quelqu'un avait une astuce pour éviter les deux appels, je serais preneur ça serait moins lourdingue.


    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
    25
    26
    27
    28
    29
    30
    31
    32
    private void fillToolStripButton_Click(object sender, EventArgs e)
            {
                if (auteur_prenomToolStripTextBox.Text == "")
                {
                    MessageBox.Show("Prénom est vide");
                    try
                    {
                        this.proc_Ouvrages_par_auteurTableAdapter.Fill
                            (this.bibliWMDataSet.Proc_Ouvrages_par_auteur,
                            auteur_nomToolStripTextBox.Text,
                            null);
                    }
                    catch (System.Exception ex)
                    {
                        System.Windows.Forms.MessageBox.Show(ex.Message);
                    }
                }
                else
                {
                    try
                    {
                        this.proc_Ouvrages_par_auteurTableAdapter.Fill
                            (this.bibliWMDataSet.Proc_Ouvrages_par_auteur,
                            auteur_nomToolStripTextBox.Text,
                            auteur_prenomToolStripTextBox.Text);
                    }
                    catch (System.Exception ex)
                    {
                        System.Windows.Forms.MessageBox.Show(ex.Message);
                    }
                }
            }
    "Toute l'histoire de l'informatique n'a été que l'histoire des systèmes d'exploitations" (Le Manifeste du PC)

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 09/06/2006, 10h03
  2. Problème de passage de paramètres à une procedure
    Par momo62 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 22/12/2005, 15h22
  3. [template] problème de passage de paramètres
    Par vinny_the_true dans le forum C++
    Réponses: 2
    Dernier message: 14/12/2005, 01h15
  4. Réponses: 9
    Dernier message: 13/05/2005, 03h13
  5. problème de passage de paramêtre sous mozilla
    Par mat10000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/09/2004, 10h48

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