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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut recuperer les valeurs des parametres d'une procedure stockée et les mettre dans un datagridview ou listview<?>
    Bonjour

    j'ai mi une requete select dans une procedure stockée, après avoir fait des MAJ de la BD, et je voulais recuperer les valeurs de select, mais elle m'envoie aucune valeur:

    voici le code:
    Code sql : 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
     
    ALTER PROCEDURE dbo.mat_etudiant
     
    	@pro nvarchar(5) ,
    	@ann nvarchar(12),
    	@mat int output,
    	@n nvarchar(70) output,
    	@p nvarchar(70) output
    AS
     
     
    declare @t as table ( id int not null IDENTITY , id_etudiant int not null, nom_etudiant VARCHAR(64) not null , PRIMARY KEY (id))
    insert into @t(id_etudiant, nom_etudiant) select e.id_etudiant, e.nom from etudiant as e join scolarite as s on e.id_etudiant=s.id_etudiant join promotion as p on s.id_promotion=p.id_promotion join annee_academique as a on s.id_annee=a.id_annee where p.promotion=@pro and a.annee_academique=@ann and e.affecte_matricule=0 order by e.nom
     
    insert into matricule(id_etudiant, matricule,nouveau) select id_etudiant, CAST(@pro AS VARCHAR(2)) + SUBSTRING('00', 1, 2 - LEN(CAST(id AS VARCHAR(03)))) + CAST(id AS VARCHAR(03)),1 from @t 
     
    update etudiant set affecte_matricule=1 where affecte_matricule=0
     
    --update nouveau set finish=1 where finish=0
     
    update matricule set nouveau=1
     
    select @mat=matricule, @n=nom, @p=prenom  from matricule m, etudiant e where m.id_etudiant=e.id_etudiant and m.nouveau=1


    code sur vb.net:
    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
    Dim cmd As SqlCommand = New SqlCommand()
            cmd.Connection = con
            cmd.CommandType = CommandType.StoredProcedure
            cmd.CommandText = "matricule_nv_etudiant"
     
            With cmd.Parameters
                .Add(New SqlParameter("@pro", CStr(cmb_promotion.SelectedItem)))
                .Add(New SqlParameter("@ann", CStr(cmb_annee.SelectedItem)))
                .Add(New SqlParameter("@mat", SqlDbType.Int))
                .Add(New SqlParameter("@n", SqlDbType.NVarChar, 70))
                .Add(New SqlParameter("@p", SqlDbType.NVarChar, 70))
     
            End With
            cmd.Parameters("@pro").Direction = ParameterDirection.Input
            cmd.Parameters("@ann").Direction = ParameterDirection.Input
            cmd.Parameters("@mat").Direction = ParameterDirection.Output
            cmd.Parameters("@n").Direction = ParameterDirection.Output
            cmd.Parameters("@p").Direction = ParameterDirection.Output
     
            cmd.ExecuteNonQuery()
     
            Dim dr As SqlDataReader = cmd.ExecuteReader()
            Dim lvi As New ListViewItem
     
            While cmd.ExecuteReader.HasRows
     
                lvi = New ListViewItem(New String() {cmd.Parameters("@mat").Value.ToString, cmd.Parameters("@n").Value.ToString, cmd.Parameters("@p").Value.ToString})
     
                liste.Items.Add(lvi)
            End While
     
            dr.Close()
    pourriez vous, svp, m'aider

    merci

  2. #2
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut
    svp
    j'aimerais lire les valeurs de select qui se trouve dans la procedure stockée, comment ferais je?

    merci

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    1ère chose tu exécute 3x la requete, une seule fois suffit !
    executenonquery execute la requete sans récupérer les valeur d'un éventuel select
    executereader execute la requete et permet de parcourir un retour de select

    dans les 2 cas on peut récupérer les valeurs des parameters sous certaines conditions
    mais vu que tu termines par un select tu pourrais simplement lire le retour

    pour lire un retour de select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim reader = cmd.Executeader
    while reader.read ' lignes
      reader.item(x) ' lecture des colonnes pour la ligne en cours
    end while
    pour récupérer les valeurs des parameters, en plus de les mettre output coté sql, il faut les mettre en direction.inputoutput ou output

    si tu fais du pas à pas, passes tu dans ton code qui lit les paramètres ? si oui ont ils la valeur prévue ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut
    j'ai appliqué ce que vous m'avez dit, mais je ne recupere rien, la procedure ne s'execute meme pas,


    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
    ALTER PROCEDURE dbo.matricule_nv_etudiant
     
    	@pro nvarchar(5) ,
    	@ann nvarchar(12)
    	--@mat int output,
    	--@n nvarchar(70) output,
    	--@p nvarchar(70) output
    AS
     
     
    declare @t as table ( id int not null IDENTITY , id_etudiant int not null, nom_etudiant VARCHAR(64) not null , PRIMARY KEY (id))
    insert into @t(id_etudiant, nom_etudiant) select e.id_etudiant, e.nom from etudiant as e join scolarite as s on e.id_etudiant=s.id_etudiant join promotion as p on s.id_promotion=p.id_promotion join annee_academique as a on s.id_annee=a.id_annee where p.promotion=@pro and a.annee_academique=@ann and e.affecte_matricule=0 order by e.nom
     
    insert into matricule(id_etudiant, matricule,nouveau) select id_etudiant, CAST(@pro AS VARCHAR(2)) + SUBSTRING('00', 1, 2 - LEN(CAST(id AS VARCHAR(03)))) + CAST(id AS VARCHAR(03)),1 from @t 
     
    update etudiant set affecte_matricule=1 where affecte_matricule=0
     
    --update nouveau set finish=1 where finish=0
     
    update matricule set nouveau=1
     
    select m.matricule, e.nom, e.prenom  from matricule m, etudiant e where m.id_etudiant=e.id_etudiant and m.nouveau=1 
    --select matricule  from matricule   where nouveau=1
    code vb.net
    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
     Dim cmd As SqlCommand = New SqlCommand()
            cmd.Connection = con
            cmd.CommandType = CommandType.StoredProcedure
            cmd.CommandText = "matricule_nv_etudiant"
     
            With cmd.Parameters
                .Add(New SqlParameter("@pro", CStr(cmb_promotion.SelectedItem)))
                .Add(New SqlParameter("@ann", CStr(cmb_annee.SelectedItem)))
                '.Add(New SqlParameter("@mat", SqlDbType.Int))
                '.Add(New SqlParameter("@n", SqlDbType.NVarChar, 70))
                '.Add(New SqlParameter("@p", SqlDbType.NVarChar, 70))
     
            End With
            cmd.Parameters("@pro").Direction = ParameterDirection.Input
            cmd.Parameters("@ann").Direction = ParameterDirection.Input
            'cmd.Parameters("@mat").Direction = ParameterDirection.Output
           ' cmd.Parameters("@n").Direction = ParameterDirection.Output
            'cmd.Parameters("@p").Direction = ParameterDirection.Output
     
     
            dr = cmd.ExecuteReader
            While dr.Read
     
                MsgBox(dr.item("matricule"))
            End While
     
            dr.Close()
    on m'affiche rien
    j'ai meme essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox(cmd.Parameters("@mat").Value.ToString)
    svp, pourriez vous m'aider?
    est ce que j'ai commis une erreur au niveau de la procèdure ?

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    exécutez le code pas à pas (F10)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éclairé Avatar de spring.time
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 294
    Par défaut
    c'est fait,
    il n'y'a rien pendant l'affichage
    au niveau de la BD, il y'a des changements, c'est à dire la procèdure s'execute mais, au niveau de l'affichage, malheureusement, non
    le datareader n'accede pas aux valeurs de select

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/08/2012, 14h23
  2. Réponses: 1
    Dernier message: 19/08/2008, 07h40
  3. Réponses: 1
    Dernier message: 31/05/2008, 13h00
  4. Réponses: 2
    Dernier message: 06/04/2007, 10h26
  5. [C#] Comment récupérer la valeur de retour d'une procédure stockée ?
    Par Jinroh77 dans le forum Accès aux données
    Réponses: 23
    Dernier message: 05/10/2006, 15h24

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