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 :

Fonction éxecuter que en pas à pas


Sujet :

VB.NET

  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut Fonction éxecuter que en pas à pas
    Bjr a tous,
    j'ai un soucis qui me parrait pas annodin.
    dans mon code j'apel une fonction que j'ai écris. Mon probléme c'est que lors de l'éxecution, il passe pas dans la fonction. Je dois mettre un point d'arret sur l'appel de la fonction pour le forcer à y entrer sinon il la saute. Et comme j'ai fais 2 fonction quasi similaire, bah il me pose se pb sur les 2 appels aux fonctions, donc je dois mettre 2 point d'arret et sa me soule

    voici mon code :
    fonction appelante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub NewRCs_enreg(ByVal int_strat_id As Integer)
    ...
    Dim sql_rcname As String
                Dim sql_LastRC_id As Integer
                Dim recup_LastRc_id As Integer
    (point d'arret!)   recup_LastRc_id = Recupere_Last_RC_id(sql_LastRC_id)
                sql_rcname = "RC_" + recup_LastRc_id.ToString()
    
    ....
     End Sub
    fonction appeler :
    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
    Public Function Recupere_Last_RC_id(ByVal Last_RC_id As Integer) As Integer
            'creer un objet connexion ainsi qu'un objet command
            Dim myConnexion As OleDbConnection = New System.Data.OleDb.OleDbConnection(My.Settings.Map_ConnectionString())
            Dim myCommand As OleDbCommand = New System.Data.OleDb.OleDbCommand()
     
            'on creer une variable pour recuperer la donnée rechercher
            ' Dim sql_RC_id_last As Integer
            myCommand.CommandText = "select max(RC_id) from RCs;"
            myCommand.Connection = myConnexion
     
            Try
                'ouvre la connexion a la bdd
                myConnexion.Open()
                'execute notre commande
                ' sql_RC_id_last = myCommand.ExecuteNonQuery()
                Last_RC_id = myCommand.ExecuteScalar()
     
     
            Catch ex As OleDb.OleDbException
                MessageBox.Show(ex.ToString)
            End Try
            'fermeture de la connexion
            myConnexion.Close()
     
            Return Last_RC_id
        End Function

  2. #2
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Et bien, tu met ton point d'arrêt, et lorsque ton exécution ce stop et te montre le code, tu appuie sur F11 (VS 2010) pour faire le pas-à-pas.

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    Oui mais justement je ne veux pas mettre de points d'arret pour qu'il entre dans les fonctions appelées. je ne devrais pas avoir à faire cela pour qu'il les execute normalement. donc pourquoi sa marche pas?*
    Mes fonctions sont Public, ya pas de probléme de nom ou quoi que se soit !!!

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    J'ai jamais vu un truc comme ça... Tu es sûr que tu n'as pas tout simplement mal interprété les résultats observés ?

    Essaie de mettre des traces de debug (Debug.Print) dans tes fonctions pour voir si elles sont exécutées, plutôt que des breakpoints

  5. #5
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Lors d'une exécution en pas-à-pas, ton "sql_LastRC_id" est bien initialisé dans " recup_LastRc_id = Recupere_Last_RC_id(sql_LastRC_id)" ?

    Lors du passage dans la fonction, ton "Last_RC_id" du return possède bien une valeur ?

  6. #6
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut tjr pas !
    J'ai mis des debug.print() dans mes fonctions appeler, et pas de miracle !!
    aucun msg, donc il ne passe vraiment pas dedans lorsque j'enleve les points d'arret.
    la je séche.

  7. #7
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    AcidLines
    Oui lorsque je fait du pas à pas, mon sql_LastRC_id return bien la valeur rechercher. mais lorsque je ne mes pas le point d'arret il saute la ligne de code et donc n'entre meme pas dans la fonction appeler et donc forcement la valeur de mon sql_LastRC_id="" puisque elle n'a pas été instancié par ma fonction Recupere_Last_RC_id(sql_LastRC_id)

  8. #8
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Last_RC_id

    Tu as bien une valeur sur cette variable de retour dans ta fonction quand tu l'exécute ?

    J'ai du mal à croire qu'il te saute complètement la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    recup_LastRc_id = Recupere_Last_RC_id(sql_LastRC_id)

  9. #9
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    oui j'ai bien une valeur de retour, dans ma fonction

    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
      Public Function Recupere_Last_RC_id(ByVal Last_RC_id As Integer) As Integer
            'creer un objet connexion ainsi qu'un objet command
            Dim myConnexion As OleDbConnection = New System.Data.OleDb.OleDbConnection(My.Settings.Map_ConnectionString())
            Dim myCommand As OleDbCommand = New System.Data.OleDb.OleDbCommand()
    
            'on creer une variable pour recuperer la donnée rechercher
            ' Dim sql_RC_id_last As Integer
            myCommand.CommandText = "select max(RC_id) from RCs;"
            myCommand.Connection = myConnexion
    
            Try
                'ouvre la connexion a la bdd
                myConnexion.Open()
                'execute notre commande
                ' sql_RC_id_last = myCommand.ExecuteNonQuery()
                Last_RC_id = myCommand.ExecuteScalar()
    
    
            Catch ex As OleDb.OleDbException
                MessageBox.Show(ex.ToString)
            End Try
            'fermeture de la connexion
            myConnexion.Close()
    
            Return Last_RC_id        
    Debug.Print(Last_RC_id)
    
        End Function
    Je retourne Last_RC_id.
    Lorsque je met mon point d'arret et que je fais du pas à pas, il entre dans la fonction, execute la requete... et tt se passe normalement. et à la sortir mon
    recup_LastRc_id = Recupere_Last_RC_id(sql_LastRC_id) est bien egal à "213" ...
    mais qd je ne met un point d'arret plus haut dans le code pour voir comment il va agir a cette ligne la, je m'apercois qu'il la saute, et donc n'entre pas du tout dans la fonction Recupere_Last_RC_id(sql_LastRC_id)

  10. #10
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Et si tu essayais avec un "&" à la place du signe "+" pour concaténer ta chaîne de caractère ? J'ai bien vu que tu fais .ToString mais on ne sait jamais ^^

  11. #11
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    Non je viens d'essayer mais sa ne change rien. !!!
    aller les gars faut qu'on trouve. j'ai besoin de vous les mecs

  12. #12
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Pourrais-tu donner le code complet de Public Sub NewRCs_enreg(ByVal int_strat_id As Integer) ?

  13. #13
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    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
     
     Public Sub NewRCs_enreg(ByVal int_strat_id As Integer)
     
            'creer un objet connexion ainsi qu'un objet command
            Dim myConnexion As OleDbConnection = New System.Data.OleDb.OleDbConnection(My.Settings.Map_ConnectionString())
            Dim myCommand As OleDbCommand = New System.Data.OleDb.OleDbCommand()
            Dim myCommand2 As OleDbCommand = New System.Data.OleDb.OleDbCommand()
            myCommand.Connection = myConnexion
            Try
                'on implement notre commande
                ' on insere une ligne vide afin de cree un nouvel id, ensuite on va recuperer ce nouveau ID pour une donner une Name
                myCommand.CommandText = "insert into RCs(RC_name) values ( 'RC_' );"
                'ouvre la connexion a la bdd
                myConnexion.Open()
                'execute notre commande
                myCommand.ExecuteNonQuery()
     
                Dim sql_rcname As String
                Dim sql_LastRC_id As Integer
                Dim recup_LastRc_id As Integer
     
                recup_LastRc_id = Recupere_Last_RC_id(sql_LastRC_id)
                sql_rcname = "RC_" + recup_LastRc_id.ToString()
     
                Dim int_G_id As Integer
                Dim recup_last_G_id As Integer
                recup_last_G_id = Recuper_Last_G_id(int_G_id)
     
                Select Case int_strat_id
                    Case 1, 3
                        'int_strat_id=1 OU 3 dc on creer un goal
                        myCommand2.CommandText = "Update RCs set RC_name='" & sql_rcname & "', G_id=" & recup_last_G_id & " where RC_id= " & recup_LastRc_id & ";"
     
                    Case 4, 5
                        'int_strat_id=1 OU 3 dc on creer un scenario
                        myCommand2.CommandText = "Update RCs set RC_name='" & sql_rcname & "' where RC_id= " & recup_LastRc_id & ";"
     
                    Case 2, 6, 7, _, 9, 10
                        'int_strat_id=2,6,7,8,9,10 dc on creer RIEN
                        myCommand2.CommandText = "Update RCs set RC_name='" & sql_rcname & "' where RC_id= " & recup_LastRc_id & ";"
     
                End Select
     
                myCommand2.Connection = myConnexion
                myCommand2.ExecuteNonQuery()
            Catch ex As OleDb.OleDbException
                MessageBox.Show(ex.ToString)
            End Try
            'fermeture de la connexion
            myConnexion.Close()
            Me.RCsTableAdapter.Fill(Me.Map_DataSet.RCs)
        End Sub

  14. #14
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Citation Envoyé par djams9 Voir le message
    oui j'ai bien une valeur de retour, dans ma fonction

    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
      Public Function Recupere_Last_RC_id(ByVal Last_RC_id As Integer) As Integer
            'creer un objet connexion ainsi qu'un objet command
            Dim myConnexion As OleDbConnection = New System.Data.OleDb.OleDbConnection(My.Settings.Map_ConnectionString())
            Dim myCommand As OleDbCommand = New System.Data.OleDb.OleDbCommand()
    
            'on creer une variable pour recuperer la donnée rechercher
            ' Dim sql_RC_id_last As Integer
            myCommand.CommandText = "select max(RC_id) from RCs;"
            myCommand.Connection = myConnexion
    
            Try
                'ouvre la connexion a la bdd
                myConnexion.Open()
                'execute notre commande
                ' sql_RC_id_last = myCommand.ExecuteNonQuery()
                Last_RC_id = myCommand.ExecuteScalar()
    
    
            Catch ex As OleDb.OleDbException
                MessageBox.Show(ex.ToString)
            End Try
            'fermeture de la connexion
            myConnexion.Close()
    
            Return Last_RC_id        
    Debug.Print(Last_RC_id)
    
        End Function
    Je retourne Last_RC_id.
    Lorsque je met mon point d'arret et que je fais du pas à pas, il entre dans la fonction, execute la requete... et tt se passe normalement. et à la sortir mon
    recup_LastRc_id = Recupere_Last_RC_id(sql_LastRC_id) est bien egal à "213" ...
    mais qd je ne met un point d'arret plus haut dans le code pour voir comment il va agir a cette ligne la, je m'apercois qu'il la saute, et donc n'entre pas du tout dans la fonction Recupere_Last_RC_id(sql_LastRC_id)
    Je vois ici que tu as mis Debug.Print après l'instruction return. A moins que je ne me trompe, il me semble que le curseur sort de la fonction avec cette instruction. Et c'est p-e pour ça que tu n'a rien en print ^^

  15. #15
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    En regarde le code contenu dans Public Sub NewRCs_enreg(ByVal int_strat_id As Integer), je remarque tu déclares la variable sql_LastRC_id comme integer et après, tu l'utilises comme paramètres dans ta fonction. Mais il faudrait p-e l'initialiser avant de l'utiliser non ?

  16. #16
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    alors le debug.print() je l'ai mis pour essayer la solution que me proposé Tomlev dans un post plus ancien, le problème ne viens pas de la puisque avant je n'avais pas cette instance, bref je l'ai enlever la et puis j'ai aussi initialisé ma variable sql_LastRC_id=1
    mais sa ne change rien... le pb est toujours le meme, il n'entre dans la fonction que si je met un point d'arret et l'execution au pas a pas, sinon il la saute....

    En tt cas merci d'essayer, aller lachons pas les gars

  17. #17
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Quelles sont les options de ton code ?

    Perso, je mets toujours Option String ON et Option Explicit ON. Cela évite d'avoir des "erreurs cachées" dans le code.

    Si ce n'est pas déjà fait, essaie de faire ça et corrige toutes les p'tites erreurs que VS va te donner pour voir.

    Ca pourra peut-être faire un peu avancer le schmilblik

  18. #18
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    J'ai ajouter Option explicit On
    en revanche je n'ai pas Option String On
    voici mes declaration de ma classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Option Explicit On
    Imports System.Data
    Imports System.Data.OleDb
    Imports System
    Imports Microsoft.VisualBasic
    J'ai enlever mes point d'arret et réexecuter mon code pour voir les eventuelles erreur, mais aucun changement, aucune erreur, et toujours le meme pb....

  19. #19
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    My bad. C'est option strict et pas string XD

  20. #20
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Par défaut
    oulala 35 erreur ma genere l'option Strict on
    sa fait bcp tout ca,
    bon ba je les corrige et je te tiens au courant..

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. éxecution du code source pas à pas
    Par guaguanco dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/06/2010, 17h05
  2. une fonction recursive que je ne comprend pas
    Par Jcpan dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2009, 14h34
  3. [Débutant] Fonction surface ya un truc que je pige pas
    Par PaM... dans le forum MATLAB
    Réponses: 6
    Dernier message: 17/02/2009, 11h11
  4. Réponses: 2
    Dernier message: 24/04/2007, 21h04
  5. erreur que j ai pas comprise ds mon pg informix
    Par zineb dans le forum Informix
    Réponses: 2
    Dernier message: 16/07/2003, 14h53

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