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 :

procédure stockée paramétrée


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    SAP MM SD technical & functional consultant
    Inscrit en
    Février 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : SAP MM SD technical & functional consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2019
    Messages : 57
    Par défaut procédure stockée paramétrée
    Bonjour tout le monde,
    J’ai un problème un peu compliqué (au moins pour moi), je vais essayer de faire mon mieux pour vous expliquer.
    Donc j’ai créé deux procédures stockées l’une pour remplir le rapport que j’ai créé par Crystal reports et l’autre pour sauvegarder quelques données affichées dans une table (odl_printed) qui a comme clé primaire un autonumber.
    L’affichage et l’enregistrement se font simultanément car j’ai besoin d’afficher la dernière clé primaire de la table d’enregistrement odl_printed.
    j'ai lié la première directement au rapport
    la deuxième qui est une procédure paramétrée :

    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
    24
    25
    26
    27
    28
    29
     
    create procedure p4
     as
    declare @p varchar(50)
    INSERT INTO [Cutting software].dbo.odl_printed(
                 designation_veh,
                 placement,
                 fk_tissu,
                 designation_tissu,
                 id_kanban_tissu,
                 placementB, 
                 placementC, 
                 placementD,
                 datetime_impression -- <=====================
    ) 
    SELECT  relation_tissu_placement_veh.designation_veh, 
                 relation_tissu_placement_veh.placement, 
                 relation_tissu_placement_veh.fk_tissu, 
                 relation_tissu_placement_veh.designation_tissu, 
                 placement.id_kanban_tissu, 
                 placement.PlacementB, 
                 placement.PlacementC, 
                 placement.PlacementD,
                 GETDATE()  -- <=====================
     
                 FROM              relation_tissu_placement_veh 
    INNER JOIN     placement 
                 ON relation_tissu_placement_veh.placement = placement.placement
                 where designation_veh = @p

    j’ai tapé le code vb suivant pour son exécution :

    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
    Dim pr As SqlParameter
            Dim r As Integer
            Cn.Open()
            Dim myCm = New SqlCommand("P4", Cn)
            With myCm
                .CommandText = "P4"
                .CommandType = CommandType.StoredProcedure
                pr = New SqlParameter
                pr.ParameterName = "@p"
                pr.SqlDbType = SqlDbType.VarChar
                pr.Direction = ParameterDirection.Input
                pr.Value = ComboBox1.Text
            End With
            r = myCm.ExecuteNonQuery()
            If r <> 0 Then
                MsgBox("rows affected")
            Else MsgBox("no rows affected")
            End If
            Cn.Close()
    Je n’ai pas réussi à enregistrer les données et par conséquent l’affichage. Je ne sais pas où le problème car le code ne retourne aucun erreur
    s'il y a d'autres explications à fournir merci de me poser des questions
    Merci d'avance pour votre aide.

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    Je n'ai pas d'exemple sous la main, mais ton erreur est ici : c'est pour chaque paramètre que tu dois faire un New, et à chaque fois, l'ajouter à la collection des paramètres de ta commande. Si tu ne t'en sort pas, je pourrai peut-être retrouver un exemple demain.
    Comme tu as un seul paramètre, ton code devrait ressembler à ceci :

    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
    Dim pr As SqlParameter
            Dim r As Integer
            Cn.Open()
            Dim myCm = New SqlCommand("P4", Cn)
            myCm.CommandText = "P4"
            myCm.CommandType = CommandType.StoredProcedure
                pr = New SqlParameter
                pr.ParameterName = "@p"
                pr.SqlDbType = SqlDbType.VarChar
                pr.Direction = ParameterDirection.Input
                pr.Value = ComboBox1.Text
           myCm.Parameters.Add(pr)
             r = myCm.ExecuteNonQuery()
            If r > 0 Then
                MsgBox("rows affected")
            ElseIf r = 0 Then
                MsgBox("no rows affected")
            Else
                MsgBox("Error")
            End If
            Cn.Close()
    ...

  3. #3
    Membre confirmé
    Femme Profil pro
    SAP MM SD technical & functional consultant
    Inscrit en
    Février 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : SAP MM SD technical & functional consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2019
    Messages : 57
    Par défaut
    Bonjour Phil Robe;
    j'ai testé ton codde mais ça me retourne l'erreur suivant

    Nom : Capture7.JPG
Affichages : 178
Taille : 16,4 Ko

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Si je comprends toujours bien les messages d'erreur en anglais, le message que tu reçoit signifie : "La procédure P4 n'a pas de paramètre et des arguments sont fournis", donc erreur de donner des arguement s'il n'y a pas de paramètre.

    C'est donc dasn MySql que tu dois aller vérifier ta procédure, peut-être la refaire ...

    Voici l'exemple que je n'avais sous la main hier soir (j'ai dû le récupérer sur un site espagnol). Dans ce cas, la procédure stockée doit faire l'ajout d'enregistrements dans une DB nommée MiPersonas (MesPersonnes). La procédure nommée "InsertUnaPersona" reçoit par paramètre les données d'une personne : Nom, Prenom, E-Mail et Telephone.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
        Dim conn As New MySqlConnection
     
        Dim Param As MySqlParameter
        Dim cmd As MySqlCommand
     
        conn.ConnectionString = "SERVER=127.0.0.1;UID='root';DATABASE=" & "MiPersonas" & ";Password=''"
        conn.Open()
     
        cmd = conn.CreateCommand()
        cmd.CommandType = CommandType.StoredProcedure
        cmd.CommandText = "InsertUnaPersona"
     
     
        Param = New MySqlParameter("_Nombre", MySqlDbType.VarChar)  ‘ Nom
        Param.Direction = ParameterDirection.Input
        Param.Value = "Macron"
        cmd.Parameters.Add(Param)
     
        Param = New MySqlParameter("_Apellido", MySqlDbType.VarChar) ‘ Prénom
        Param.Direction = ParameterDirection.Input
        Param.Value = "Emanuel"
        cmd.Parameters.Add(Param)
     
        Param = New MySqlParameter("_Direccion", MySqlDbType.VarChar) ‘ e-mail
        Param.Direction = ParameterDirection.Input
        Param.Value = "em@elysee.fr"
        cmd.Parameters.Add(Param)
     
        Param = New MySqlParameter("_Telefono", MySqlDbType.VarChar) ‘ Téléphone
        Param.Direction = ParameterDirection.Input
        Param.Value = "951159"
        cmd.Parameters.Add(Param)
     
        MessageBox.Show(cmd.ExecuteNonQuery())
     
        conn.Close()
        conn.Dispose()
    End Sub

  5. #5
    Membre confirmé
    Femme Profil pro
    SAP MM SD technical & functional consultant
    Inscrit en
    Février 2019
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : SAP MM SD technical & functional consultant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2019
    Messages : 57
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    C'est donc dasn MySql que tu dois aller vérifier ta procédure, peut-être la refaire ...
    Bonjour,
    en fait oui, c'est au niveau de la création de procédure le blocage (il ne mérite pas meme le signaler en tant que blocage )
    donc il faut juste declarer le parametre avant comme ça
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     LTER PROCEDURE [dbo].[P2]
    @p varchar(50)
    as    
    INSERT INTO [Cutting software].dbo.odl_printed(
                 designation_veh,

    merci beaucoup Phil

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2008, 14h49
  2. Réponses: 6
    Dernier message: 19/07/2007, 16h48
  3. [PB 7.0.3] Procédures stockées : paramètres in
    Par lucimast dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 21/03/2007, 15h00
  4. [c#][procédure stockée] paramètre à null
    Par pinocchio dans le forum Accès aux données
    Réponses: 2
    Dernier message: 02/10/2006, 16h09
  5. [C#] Procédures stockées - Paramètres "null"
    Par aymron dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/12/2005, 17h06

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