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 :

Pb ordre d'exécution des procédures


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut Pb ordre d'exécution des procédures
    Bonjour,

    J'ai un souci à l'ouverture d'un windowsform, appelé à partir d'une autre fenêtre. En effet, la procédure événementielle qui devrait être exécutée à l'ouverture, de la forme "Private Sub Dialog1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load" ne l'est pas. C'est une autre procédure existante dans le code de ce formulaire qui est exécuté.

    Je sèche depuis deux jours là-dessus. Voici mon code (Je n'en suis pas très fier, mais je ne suis pas un spécialiste...)

    Code VB.NET : 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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    Public Class Absence1
     
        Dim Durée(3), NbJours, Nb1, Date2, Jour, NbOuvré, DateEnCours, Fériés(10), NbFériés, Test
        Dim JourValide(2), DuréeAbsence(2)
     
        Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
            Me.Close()
        End Sub
     
        Private Sub Dialog1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Initialisation des champs du formulaire
            Me.Label1.Text = NomAgent
     
            Me.DateTimePicker1.Value = Today
            Me.DateTimePicker2.Value = Today
     
            Me.ListBox1.Items.Clear()
     
            'Chargement en mémoire des durées par type d'absence
            Conn.Open(ChaineConnexion)
     
            Rst = New ADODB.Recordset
            Rst.CursorLocation = 3
            Rst.CursorType = 0
            Rst.LockType = 1
     
            Rst.Open("Select * from [Durées]", Conn)
     
            If Rst.RecordCount = 0 Then
                Rst.Close()
                Conn.Close()
                Exit Sub
            End If
     
            ReDim Durée(Rst.RecordCount)
            For i = 1 To Rst.RecordCount
                Durée(i) = Rst(1).Value
                Me.ListBox1.Items.Add(Rst(0).Value)
                Rst.MoveNext()
            Next
     
            Rst.Close()
     
            'Chargement en mémoire des jours féries
     
            Rst = New ADODB.Recordset
            Rst.CursorLocation = 3
            Rst.CursorType = 0
            Rst.LockType = 1
            Rst.Open("Select * from [Férié] ORDER BY Férié", Conn)
            If Rst.RecordCount = 0 Then
                Rst.Close()
                Conn.Close()
                Exit Sub
            End If
            NbFériés = Rst.RecordCount
            ReDim Fériés(NbFériés)
            For i = 1 To NbFériés
                Fériés(i) = Rst(0).Value
                Rst.MoveNext()
            Next
     
            Rst.Close()
            Conn.Close()
     
            CalculJours()
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Me.Close()
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim ChaineRecherchée
            Conn.Open(ChaineConnexion)
            Rst = New ADODB.Recordset
            Rst.CursorLocation = 3
            Rst.CursorType = 0
            Rst.LockType = 1
     
            For i = 0 To Nb1
                Date2 = DateAdd("d", i, DateTimePicker1.Value)
                DateEnCours = Format(Date2, "dd/MM/yyyy")
     
                Test = True
     
                For j = 1 To NbFériés
                    If DateEnCours = Fériés(j) Then Test = False : Exit For
                Next
     
                Jour = Format(Date2, "dddd")
                If Jour <> "samedi" And Jour <> "dimanche" And Test Then
                    ChaineRecherchée = Year(Date2) & "-" & Date2.DayOfYear & "-" & _
                        Format(NumAgent, "00") & "-%"
                    Rst.Open("Select * from [Base] WHERE Code LIKE'" & ChaineRecherchée & "'", Conn, ADODB.CursorTypeEnum.adOpenDynamic, _
                         ADODB.LockTypeEnum.adLockOptimistic)
                    Select Case Rst.RecordCount
                        Case 0
                            Rst.AddNew()
     
                            Rst(0).Value = Year(Date2) & "-" & Date2.DayOfYear & "-" & _
                        Format(NumAgent, "00") & "-01"
                            Rst(1).Value = Format(Date2, "ddd/MM/yyyy")
                            Rst(3).Value = ListBox1.Items(ListBox1.SelectedIndex)
                            Rst(4).Value = Durée(ListBox1.SelectedIndex + 1)
                            Rst.Update()
     
                        Case Else
                            Rst.Sort = "Code"
                            Rst.MoveLast()
                            If Rst(2).Value Is DBNull.Value Then
                                Rst(2).Value = Format(Now, "g")
                                Rst.Update()
                                Texte = "Fin du service  : "
                                Son = "BeepOkFin"
                            Else
                                Numpointage = Rst.RecordCount + 1
                                Rst.AddNew()
                                Rst(0).Value = Year(Date2) & "-" & Date2.DayOfYear & "-" & _
                        Format(NumAgent, "00") & "-" & Format(CInt(Numpointage), "00")
                                Rst(1).Value = Format(Date2, "ddd/MM/yyyy")
                                Rst(3).Value = ListBox1.Items(ListBox1.SelectedIndex)
                                Rst(4).Value = Durée(ListBox1.SelectedIndex + 1)
                                Rst.Update()
                            End If
                    End Select
                End If
                Rst.Close()
            Next
            Conn.Close()
        End Sub
     
        Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
            Label3.Text = Durée(ListBox1.SelectedIndex + 1) & " heures/Jour"
        End Sub
        Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
            CalculJours()
        End Sub
     
        Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
            CalculJours()
        End Sub
     
        Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
            CalculJours()
        End Sub
     
     
        Private Sub RadioButton4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton4.CheckedChanged
            CalculJours()
        End Sub
     
        Private Sub CalculJours()
     
            NbOuvré = 0
            Nb1 = DateDiff(DateInterval.Day, DateTimePicker1.Value, DateTimePicker2.Value) + 1
     
            ReDim JourValide(Nb1)
            ReDim DuréeAbsence(Nb1)
            For i = 0 To Nb1 - 1
                Date2 = DateAdd("d", i, DateTimePicker1.Value)
                DateEnCours = Format(Date2, "dd/MM/yyyy")
                Test = True
     
                For j = 1 To NbFériés
                    If DateEnCours = Fériés(j) Then Test = False : Exit For
                Next
     
                Jour = Format(Date2, "dddd")
                If Jour <> "samedi" And Jour <> "dimanche" And Test Then
                    NbOuvré = NbOuvré + 1
                    JourValide(i) = DateEnCours
                    DuréeAbsence(i) = Durée(ListBox1.SelectedIndex + 1)
                    If RadioButton2.Checked = True And i = 0 Then NbOuvré = NbOuvré - 0.5
                    If RadioButton3.Checked = True And i = Nb1 Then NbOuvré = NbOuvré - 0.5
                End If
            Next
     
            Label2.Text = NbOuvré & " jours"
     
     
     
        End Sub
        Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
            CalculJours()
     
        End Sub
     
     
     
     
        Private Sub DateTimePicker2_ValueChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker2.ValueChanged
            CalculJours()
        End Sub
     
    End Class


    A l'appel de ce formulaire, c'est la procédure "Private Sub RadioButton1_CheckedChanged" qui s'exécute en premier.

    pourriez vous m'aider ?

    Merci de votre réponse.

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Je n'ai pas ce comportement de mon côté : c'est bien la méthode Load qui est exécutée en premier. Ceci dit, j'ai viré tout le code des accès à la base de données.

    Montre-nous comment tu appelles ce formulaire.

    Et essaye de mettre en commentaire chaque méthode qui s'ouvre avant le Load, ça pourrait peut-être t'aiguiller sur l'origine du problème.


    PS : le noms de variables avec des accents, c'est pas top. Evite, si tu peux.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Merci de t'occuper de mon pb...

    Ce formulaire est appelé à partir d'un autre formulaire par la méthode suivante :

    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            '==Demande d'établissement des données personnelles
     
            Accès_Synthèse.ShowDialog()
            Me.TextBox2.Focus()
            Me.MonthCalendar1.TodayDate = Today
     
            If Not Saisie Then Exit Sub
     
            VérifCodeBarre()
            If Not Valide Then Exit Sub
            Saisie = 1
            ChoixAgent.ShowDialog()
     
            Select Case Saisie
                Case 1
                    ChoixSynthèse.ShowDialog()
     
                Case 2
                    Absence.ShowDialog()
     
            End Select
            Me.TextBox2.Text = ""
        End Sub
    par l'instruction : Sinon, je vais essayer de metre en commentaire les méthodes appelées pour voir...

    Je te tiens au courant.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    J'ai fait la manip suivante :

    Création d'un nouveau formulaire
    Copié-collé de tous les contrôles du formulaire au comportement "atypique"
    Copié-collé de toutes les méthodes événementielles et autres

    Appel de ce nouveau formulaire... et ça marche. Par contre, quand j'appelle l'ancien formulaire, toujours le même problème.

    Je pense que j'ai du faire une modification quelque part qui modifie le comportement. Mais laquelle ? et où ? mystère... En effet, au début de la mise au point, je n'avais pas de problème, et c'est en cours de modification que c'est apparu.

  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par ogeiger Voir le message
    Absence.ShowDialog()
    Euh, il y a quelque chose que je pige pas, là :
    La form dont tu nous parle plus haut s'appelle Absence1 et tu appelles ShowDialog() sur Absence ce doit être une form différente...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Ok pour la différence de nom. J'ai fait une modif entre-temps,. C'est bien "Absence" le nom du formulaire.

    Par contre, je me suis réjouis trop vite. En fait, je n'avais pas copié TOUTES les méthodes. Après avoir tout copié, j'ai de nouveau le même comportement.

    J'ai essayé de commenter chaque méthode exécutée en premier au chargement du formulaire. En fait, une autre méthode est exécutée sans que la logique de ce comportement m'apparaisse.

  7. #7
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Salut,

    en mode debug, tu dois avoir une fenetre pile des appels, qui te permets de remonter en les appels qui ont mene a ton point d'arret...

    Si tu peux localiser cette fenetre, tu pourras peut-etre voir d'ou vient l'appel a ta fonction...

    Sinon, juste pour etre sur, quand tu fais Absence.ShowDialog(), Absence est une instance de quelle classe ?

Discussions similaires

  1. [TestNG] Ordre d'exécution des tests
    Par crawling5 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 29/09/2008, 17h01
  2. Impossible d'exécuter des procédures
    Par urashima82 dans le forum Oracle
    Réponses: 2
    Dernier message: 17/04/2008, 22h34
  3. L'ordre d'exécution des threads
    Par Dosseh dans le forum Modules
    Réponses: 1
    Dernier message: 05/07/2007, 20h24
  4. [URL Rewriting] ordre d'exécution des règles
    Par safisafi dans le forum Apache
    Réponses: 1
    Dernier message: 21/11/2006, 18h52
  5. ordre d'exécution des événements onblur et onfocus
    Par letycaf dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2006, 15h30

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