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é] Erreur d'execution VB.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Par défaut [Procédure stocké] Erreur d'execution VB.
    Bonjour,
    j'ai une procédure stocké qui me permet de vérifier si un cours n'est pas déja enseigné par un professeur.
    Si il est déja enseigné la procédure retourne juste 0 si ce n'est pas le cas le couple professeur, cours est associé et la procédure retourne 1.

    Voici mon code d'exploitation de ma procédure :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
            '***************************************************
            'Verification que le cour n'es pas déjà associer
            '***********************************************
            'AFICHER LE PRENOM DU PROFESSEUR SELECIONNE ::::
            'Chaîne de connexion
            Dim connectString As String = "Data Source=SRVSQL\SRVSQL;Initial Catalog=ecole;Integrated Security=True"
            'Variable parametre d'entrée et de sortie pour la procédure
            Dim paramNumCour As SqlClient.SqlParameter
            Dim paramNumProf As SqlClient.SqlParameter
            Dim paramResultat As SqlClient.SqlParameter
     
            'Objet connection
            Dim connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
            'Ouverture
            Try
                'Ouverture de la connexion à la BDD
                connection.Open()
            Catch
                'Message d'erreur comme quoi la connexion n'a pas été effectuée
                MessageBox.Show("erreur de connexion a la base")
            End Try
     
     
            'Déclaration de la commande Requete
            Dim commande As SqlClient.SqlCommand
     
            'Attribution connexion à commande
            commande.Connection = connection
            'Déclaration du Nom de la procédure à appeller
            commande.CommandText = "verification_cour_prof"
            'Précise que c'est une procédure stocké
            commande.CommandType = CommandType.StoredProcedure
            'Décalaration des paramètre
            'Num_cours
            paramNumCour = New SqlClient.SqlParameter("@num_cour", Me.num_cour.SelectedValue)
            paramNumCour.Direction = ParameterDirection.Input
     
            'Num_prof
            paramNumProf = New SqlClient.SqlParameter("@num_prof", Me.num_prof.SelectedValue)
            paramNumProf.Direction = ParameterDirection.Input
     
            'Déclaration de la variable de récupération du résultat returns
            paramResultat = New SqlClient.SqlParameter("RETURN_VALUE", SqlDbType.Int)
            paramResultat.Direction = ParameterDirection.ReturnValue
     
            'Allocation de la variable de sortie
            commande.Parameters.Add(paramResultat)
            'Execution de la requete
            commande.ExecuteNonQuery()
     
            'Vérification du traitement de la procédure
            If paramResultat.Value = 1 Then
                'Procédure bien executé : Matiere enseigné
                MessageBox.Show("Le traitement c'est bien passé")
            Else
                'Erreur lors de l'execution : Matiere deja enseigné
                MessageBox.Show("La matière a deja un enseignant")
            End If
    C'est ici qu'il y a une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            'Attribution connexion à commande
            commande.Connection = connection
    ça me dis :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Auriez-vous une idée?
    Merci,
    .Matthieu

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 467
    Par défaut
    J'ai essayé une autre méthode :
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
        '***************************************************
            'Verification que le cour n'es pas déjà associer
            '***********************************************
            'AFICHER LE PRENOM DU PROFESSEUR SELECIONNE ::::
            'Chaîne de connexion
            Dim connectString As String = "Data Source=SRVSQL\SRVSQL;Initial Catalog=ecole;Integrated Security=True"
            'Variable parametre d'entrée et de sortie pour la procédure
            Dim paramNumCour As SqlClient.SqlParameter
            Dim paramNumProf As SqlClient.SqlParameter
            Dim paramResultat As SqlClient.SqlParameter
            'Varaible d'accueil de la chain procedure
            Dim StrProcedure As String = "verification_cour_prof"
     
            'Objet connection
            Dim connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(connectString)
     
            'Ouverture
            Try
                'Ouverture de la connexion à la BDD
                connection.Open()
            Catch
                'Message d'erreur comme quoi la connexion n'a pas été effectuée
                MessageBox.Show("erreur de connexion a la base")
            End Try
     
     
            'Déclaration de la commande Requete
            Dim commande As New SqlClient.SqlCommand(StrProcedure, connection)
     
            'Décalaration des paramètre
            'Num_cours
            paramNumCour = New SqlClient.SqlParameter("@num_cour", Me.num_cour.SelectedValue)
            paramNumCour.Direction = ParameterDirection.Input
     
            'Num_prof
            paramNumProf = New SqlClient.SqlParameter("@num_prof", Me.num_prof.SelectedValue)
            paramNumProf.Direction = ParameterDirection.Input
     
            'Déclaration de la variable de récupération du résultat returns
            paramResultat = New SqlClient.SqlParameter("RETURN_VALUE", SqlDbType.Int)
            paramResultat.Direction = ParameterDirection.ReturnValue
     
            'Allocation de la variable de sortie
            commande.Parameters.Add(paramResultat)
            'Execution de la requete
            commande.ExecuteNonQuery()
     
            'Vérification du traitement de la procédure
            If paramResultat.Value = 1 Then
                'Procédure bien executé : Matiere enseigné
                MessageBox.Show("Le traitement c'est bien passé")
            Else
                'Erreur lors de l'execution : Matiere deja enseigné
                MessageBox.Show("La matière a deja un enseignant")
            End If
    Et là ça me dis que la procédure est introuvable sur le serveur.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Bonjour,
    Pour le premier pépin, effectivement, il fallait instancier ta classe de connection.

    Pour le second problème que tu cites, il faudrait que tu précises l'endroit où l'erreur survient puis vérifier la cohérence avec ta base de données (SQL Server je suppose ?) : emplacement, respect des noms et de la structure de la connectionstring...

    Le forum doit fourmiller d'exemples d'appels de procédure stockées par paramètre et d'exploitation du retour...

  4. #4
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut
    alors d'abord une tite modification:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Try
                'Ouverture de la connexion à la BDD
                connection.Open()
            Catch
                connection.close()
                connection.open
            End Try
    mais je ne sais pas commetnf aire si ça ne fonctionne pas.

    Après, pour ton dernier problème
    Citation Envoyé par GarsDuCalvados
    Et là ça me dis que la procédure est introuvable sur le serveur.
    car il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim commande As New SqlClient.SqlCommand(StrProcedure, connection)
    commande.commandetype = storedprocedure, ou un truc comme ça.

  5. #5
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    L'erreur dans le 1er code : l'objet commande n'est pas instancié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Déclaration de la commande Requete
    Dim commande As New SqlClient.SqlCommand
    Dans le 2ème code : comme le dis "poulain", il te manque l'indication que tu executes une procédure stockée (tu l'avais très bien indiqué dans le 1er code)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Précise que c'est une procédure stocké
    commande.CommandType = CommandType.StoredProcedure
    
    Sinon, si je peux me permettre, il y a un p'tit truc auquel j'aimerais attiré ton attention, (je pense que c'est ce que voulais t'indiquer "Poulain") dans la gestion de ton bloc try/catch :
    Une fois ton bloc Try/Catch traité, le code suivant va être traité et tu risques de rencontrer des exceptions non gérées si la connexion n'est pas ouverte.


    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
     
            '...
     
           'Ouverture
            Try
                'Ouverture de la connexion à la BDD
                connection.Open()
            Catch
                'Message d'erreur comme quoi la connexion n'a pas été effectuée
                MessageBox.Show("erreur de connexion a la base")
     
               ' Ici, il faut sortie de la procédure car sans connexion
               ' on ne peut rien faire
               Exit Sub
     
            End Try
     
     
            '... Code après Try/Catch qui utilise connection
    Bonne continuation

Discussions similaires

  1. Procédure stockée : erreur de création
    Par jeromesteffe dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/06/2007, 17h45
  2. [procédure stockée] Erreur dans un while
    Par LE NEINDRE dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 19/06/2007, 16h46
  3. Réponses: 7
    Dernier message: 03/05/2007, 12h44
  4. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 09h39
  5. [Procédure stockée] Erreur 1305
    Par SSJ17Vegeta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/11/2005, 02h38

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