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 :

Problème lors d'un second enregistrement.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut Problème lors d'un second enregistrement.
    Bonjour à tous.

    Je tiens a m'excuser d'avance du pavé de code que je vais vous donner mais mon erreur ce situe quelque-part là dedans et je n'arrives pas à trouver ou...

    En fait mon programme sers à enregistrer des données de matériel: type de matériel, numéro de séries etc etc.
    J'arrive à en ajouter et à les enregistrer lors du 1er enregistrement.
    Exemple j'ai mon fichier avec 30, 40 ou même 500000 objets enregistrés, si je veux en ajouter 1 pas de soucis il me l'ajoute à la suite.
    En revanche, avec ce code, si je veux après en avoir ajouté 1, en rajouter un second.....Ben..... craboum.....
    Ca me supprime tous ceux qui étaient deja présents et me fait un clonage (je ne sais pas combien de fois je pense que c'est assez aléatoire) de mon dernier matériel enregistré.
    Du coup je me retrouves avec mon second matériel 20 30 5000 fois dans mon fichier....
    Je ne trouve pas d'où viens ce problème...
    Si quelqu'un peut m'éclairer je suis preneur

    P.S. : avec l'aide pas à pas de vs2013, il ne m'affiche même pas les valeurs de mes textbox je ne sais pas pourquoi, pourtant dans mon fichier je les retrouves bien.
    P.S.2 : je pense que mon problème viens de mon "Enregistrement_Matériel()" mais sans réelle certitude.

    Voila je pense avoir tout dit.
    Merci par avance.



    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
    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
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    Public Class Ajouter_matériel
        Dim ComboBox As New ComboBox 'Créé une nouvelle Combobox nommée ComboBox.'
        Dim Label As New List(Of Label) 'Créé une nouvelle liste de Label nommée Label.'
        Dim TextBox As New List(Of TextBox) 'Créé une nouvelle liste de TextBox nommée TextBox.'
        Dim Boutons As New List(Of Button) 'Créé une nouvelle liste de Button nommée Boutons.'
        Dim type_produit As String = "" 'Créé une chaine de caractères nommée type_produit.'
     
        Private Sub Ajouter_matériel_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'S'exécute lors du chargement de la fenêtre.'
     
            ComboBox.Visible = True 'La combobox sera visible dès le chargement de la fenêtre d'ajout de matériel.'
            ComboBox.DropDownStyle = ComboBoxStyle.DropDownList 'Définit la ComboBox comme non modifiable par l'utilisateur.'
     
            For i As Integer = 0 To 1
     
                Boutons.Add(New Button) 'Ajoute un nouveau Button à la liste Boutons."
                Boutons(i).Width = 150 'Définit la largeur du Button créé.'
                AddHandler Boutons(i).Click, AddressOf Boutons_Click 'Créé un événement lors d'un clic sur le nouveau Button, et lance le sous-programme Boutons_Click.'
     
            Next
     
            With ComboBox.Items 'Avec le terme "ComboBox.Items",'
                .Add("Moteur Asynchrone.") 'Ajouter l'item "Moteur Asynchrone.".'
                .Add("Moteur Brushless.") 'Ajouter l'item "Moteur Brushless.".'
                .Add("Motoréducteur.") 'Ajouter l'item "Motoréducteur.".'
                .Add("Variateur.") 'Ajouter l'item "Variateur.".'
                .Add("Poste à souder.") 'Ajouter l'item "Poste à souder.".'
                .Add("Découpeur Plasma.") 'Ajouter l'item "Découpeur Plasma.".'
                .Add("Chargeur Démarreur.") 'Ajouter l'item "Chargeur Démarreur.".'
                .Add("Autre.") 'Ajouter l'item "Autre.".'
            End With
     
            FlowLayoutPanel.AutoScroll = True 'Donne au FlowLayoutPanel la possibilité d'addapter une barre de défillement si necessaire.'
            FlowLayoutPanel.Controls.Add(ComboBox) 'Ajoute la ComboBox dans le FlowLayoutPanel.'
     
            AddHandler ComboBox.SelectedIndexChanged, AddressOf ComboBox_ChangeIndex 'Créé un événement lorsque l'élément dans la comboBox est changé par l'utilisateur.'
     
        End Sub
     
        Private Sub ComboBox_ChangeIndex() 'S'exécute lorsque un item de la ComboBox est changé.'
     
            Label.Clear() 'Supprime tous les Labels dans la liste "Label".'
            TextBox.Clear() 'Supprime toutes les TextBox dans la liste "TextBox".'
            FlowLayoutPanel.Controls.Clear() 'Supprime tous les controles présents dans le "FlowLayoutPanel".'
            ComboBox.Height = 40 'Change la hauteur de la ComboBox pour une bonne mise en page.'
            FlowLayoutPanel.Controls.Add(ComboBox) 'Ajoute la ComboBox avec sa nouvelle taille dans le "FlowLayoutPanel".'
     
            If ComboBox.SelectedIndex = 0 Or ComboBox.SelectedIndex = 3 Or ComboBox.SelectedIndex = 6 Or ComboBox.SelectedIndex = 7 Then 'Si l'item sélectionné dans la ComboBox est "Moteur Asynchrone." ou "Variateur." ou "Chargeur Demarreur." ou "Autre.",'
     
                For i As Integer = 0 To 4 'Boucle de 4 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 4.'
     
                If ComboBox.SelectedIndex = 0 Then 'Si l'item sélectionné dans la ComboBox est "Moteur Asynchrone.",'
                    Label(3).Text = "Rotation par minutes :" 'Définit le texte du Label(3).'
                Else 'Sinon (si l'item sélectionné dans la ComboBox est "Variateur." ou "Chargeur Demarreur." ou "Autre",)
                    Label(3).Text = "Tension de sortie :" 'Définit le texte du Label(3).'
                End If 'Fin de la condition.'
     
                Label(4).Text = "Puissance :" 'Définit le texte du Label(4).'
     
            ElseIf ComboBox.SelectedIndex = 1 Then 'Sinon si l'item sélectionné dans la ComboBox est "Moteur Brushless",'
     
                For i As Integer = 0 To 5 'Boucle de 5 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 5.'
     
                Label(3).Text = "Rotation par minutes :" 'Définit le texte du Label(3).'
                Label(4).Text = "Référence du codeur :" 'Définit le texte du Label(4).'
                Label(5).Text = "Puissance :" 'Définit le texte du Label(5).'
     
            ElseIf ComboBox.SelectedIndex = 2 Then 'Sinon si l'item sélectionné dans la ComboBox est "Motoréducteurs",'
     
                For i As Integer = 0 To 7 'Boucle de 7 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 7.'
     
                Label(3).Text = "Rotation par minutes :" 'Définit le texte du Label(3).'
                Label(4).Text = "Marque du réducteur :" 'Définit le texte du Label(4).'
                Label(5).Text = "N° de série du réducteur :" 'Définit le texte du Label(5).'
                Label(6).Text = "Rapport de réduction :" 'Définit le texte du Label(6).'
                Label(7).Text = "Puissance :" 'Définit le texte du Label(7).'
     
            ElseIf ComboBox.SelectedIndex = 4 Or ComboBox.SelectedIndex = 5 Then 'Sinon si l'item sélectionné dans la ComboBox est "Poste à souder" ou "Découpeur Plasma",'
     
                For i As Integer = 0 To 3 'Boucle de 3 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 3.'
     
                Label(3).Text = "Puissance :" 'Définit le texte du Label(3).'
     
            End If 'Fin de la condition.'
     
            FlowLayoutPanel.SetFlowBreak(ComboBox, True) 'Oblige l'interface à aller à la ligne après la ComboBox dans le FlowLayoutPanel.'
     
            ComboBox.Height = 21 'Définit la hauteur de la ComboBox à 21 pixels.'
            Label(0).Text = "Marque :" 'Définit le texte du Label(0).'
            Label(1).Text = "N° de série :" 'Définit le texte du Label(1).'
            Label(2).Text = "Tension d'alimentation :" 'Définit le texte du Label(2).'
     
            For i As Integer = 0 To 1 'Boucle de 1 rotations. Chaque rotation ajoute +1 à i.'
                FlowLayoutPanel.Controls.Add(Boutons(i)) 'Ajoute le "Boutons(i)" créé au chargement de la fenêtre dans le "FlowLayoutPanel".'
            Next 'Ajoute +1 à i tant que i est différent de 1.'
     
            Boutons(0).Text = "Annuler" 'Définit le texte du Boutons(0).'
            Boutons(1).Text = "Enregistrer" 'Définit le texte du Boutons(1).'
     
        End Sub
     
        Private Sub Boutons_Click() 'S'exécute lors d'un clic sur un des 2 Boutons créé lors du chargement de la fenêtre.'
     
            Machines_Client.Matériel.Add(Matériel_Client) 'Ajoute le matériel nouvellement créé aux machines du client.'
            Nom_Client.Machine.Add(Machines_Client) 'Ajoute les machines client au client.'
     
            If Boutons(0).Focused Then 'Si c'est un clic sur le bouton "Annuler", alors :'
     
                Lecture_Fiche_Client.Show() 'Affiche la page d'accueuil.'
                Me.Close() 'Ferme la fenêtre en cours.'
     
            Else 'Sinon, si c'est un clic sur le bouton "Enregistrer,"
     
                If ComboBox.SelectedIndex <> 7 Then 'Si l'item sélectionné dans la ComboBox est différent de "Autre :", alors :'
     
                    Matériel_Client.Type_Produit = ComboBox.SelectedItem 'Le type de produit dans matériel client est égal au texte de l'item sélectionné dans la ComboBox.'
                    Enregistrement_Matériel() 'Exécute le sous-programme Enregistrement_Matériel.'
     
                Else 'Sinon, si l'item sélectionné dans la ComboBox est "Autre ",'
     
                    type_produit = InputBox("Quel est le type de produit ?", "Type de produit.") 'Créé une fenêtre de saisie pour nommer le produit et entre ce nom dans la variable "type_produit".'
     
                    If type_produit <> "" Then 'Si la variable type_produit contient du texte, alors :' 
     
                        Matériel_Client.Type_Produit = "Autre : " & type_produit 'Type_Produit prends la valeur "Autre : " suivit de la valeur de type_produit. 
                        Enregistrement_Matériel() 'Exécute le sous-programme Enregistrement_Matériel.'
     
                    End If 'Fin de la condition.'
     
                End If 'Fin de la condition.'
     
            End If 'Fin de la condition.'
     
        End Sub
     
        Private Sub Mise_En_Page_Ajout_Matériel(i As Integer)
     
            Label.Add(New Label) 'Ajoute un nouveau Label dans la liste Label.'
            TextBox.Add(New TextBox) 'Ajoute une nouvelle TextBox dans la liste TextBox.'
     
            With Label(i) 'Avec le terme Label(i), (i = numéro de rotation)'
                .Height = TextBox(i).Height 'Règle la hauteur du Label(i) au même niveau que la hauteur de la TextBox(i).'
                .Width = 150 'Règle la largeur du Label(i) à 150 pixels.'
                .TextAlign = ContentAlignment.MiddleLeft 'Définit l'alignement du texte contenu dans le Label(i) comme centré à gauche.'
            End With
     
            TextBox(i).Width = 150 'Définit la largeur de la TextBox(i) à 150 pixels.'
            FlowLayoutPanel.Controls.Add(Label(i)) 'Ajoute le Label(i) dans le FlowLayoutPanel.'
            FlowLayoutPanel.Controls.Add(TextBox(i)) 'Ajoute la TextBox(i) dans le FlowLayoutPanel.'
            FlowLayoutPanel.SetFlowBreak(TextBox(i), True) 'Oblige l'interface à aller à la ligne après chaque TextBox(i) dans le FlowLayoutPanel.'
     
        End Sub
     
        Private Sub Enregistrement_Matériel()
     
            If ComboBox.SelectedIndex = 0 Then 'Si combobox = Moteur Asynchrone :
     
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Marque = TextBox(0).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Num_Série = TextBox(1).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Tension_Entrée = TextBox(2).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Rotations_Par_Minutes = TextBox(3).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Puissance = TextBox(4).Text
     
            ElseIf ComboBox.SelectedIndex = 1 Then 'Si combobox = moteur brushless
     
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Marque = TextBox(0).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Num_Série = TextBox(1).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Tension_Entrée = TextBox(2).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Rotations_Par_Minutes = TextBox(3).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Référence_Codeur = TextBox(4).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Puissance = TextBox(5).Text
     
            ElseIf ComboBox.SelectedIndex = 2 Then 'si combobox = motoréducteur
     
                Matériel_Client.Référence.Référence_Réducteur.Add(Réducteur)
                'TextBox(0).Text
                'TextBox(1).Text
                'TextBox(2).Text
                'TextBox(3).Text
                'TextBox(4).Text
                'TextBox(5).Text
                'TextBox(6).Text
                'TextBox(7).Text
     
            ElseIf ComboBox.SelectedIndex = 4 Then 'si combobox = variateur
     
                'TextBox(0).Text
                'TextBox(1).Text
                'TextBox(2).Text
                'TextBox(3).Text
     
            ElseIf ComboBox.SelectedIndex = 5 Then 'si combobox = poste à souder
     
                'TextBox(0).Text
                'TextBox(1).Text
                'TextBox(2).Text
                'TextBox(3).Text
     
            Else
     
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Marque = TextBox(0).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Num_Série = TextBox(1).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Tension_Entrée = TextBox(2).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Tension_Sortie = TextBox(3).Text
                Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel(Nom_Client.Machine(Nom_Client.Machine.Count - 1).Matériel.Count - 1).Référence.Puissance = TextBox(4).Text
     
            End If
     
            Enregistre_Fiche_Client(Fichier_Client, Nom_Client) 'Lance le sous programme d'enregistrement, qui va enregistrer dans le fichier client, le nouveau matériel.'
     
            If Not Erreur Then 'Si aucune erreur ne ce produit lors de l'enregistrement, alors :'
                MsgBox("Matériel ajouté au client " & Nom_Client.Société.Nom & " avec succes.", MsgBoxStyle.Information, "Opération Réussie.") 'Affiche un message comme quoi tout c'est bien déroulé.'
            End If 'Fin de la condition.'
     
        End Sub
     
    End Class

  2. #2
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    C'est re moi.
    Bon j'ai un peut avancé en fait mon problème est au niveau de la ligne 111 avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Machines_Client.Matériel.Add(Matériel_Client) 'Ajoute le matériel nouvellement créé aux machines du client.'
    Je réfléchis à une solution mais je n'arrives pas à trouver ou poser cette**** de ligne

  3. #3
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Bonjour,

    Qu'est ce qu'il y a dans :

    Machines_Client.Matériel.Add()

    Si il s'agit d'une fonction... ou bien juste d'une liste ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    non non c'est une liste oui ! la seule fonction non présente dans le code est la fonction d'enregistrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Enregistre_Fiche_Client(Fichier_Client, Nom_Client) 'Lance le sous programme d'enregistrement, qui va enregistrer dans le fichier client, le nouveau matériel.'

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Et si je comprends bien, c'est cette fonction qui enregistre X fois le même élément dans un fichier c'est ça ?

    Au quel cas, montre nous donc le code de cette fonction...

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    non en fait je me suis rendu compte que lors du passage à la ligne 116 et 117, il me créé un clone. (ligne 111 112 au premier post.)
    pour être plus clair :
    voici mon fichier avant enregistrement d'un nouveau matériel :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <Client xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Société Nom="Bigard">
        <Adresse Ville="" C_Postal="" Rue="">
          <Téléphone Numéro="" Nom="" />
          <Adresse_Mail Mail="" Nom="" />
        </Adresse>
      </Société>
      <Feuille Nom="Divers">
        <Interventions Num_Facture="G12" Date="24/02/2015" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 1" />
        <Interventions Num_Facture="G12" Date="24/02/2015" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 1/2" />
      </Feuille>
      <Feuille Nom="Prog">
        <Interventions Num_Facture="" Date="" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 2" />
      </Feuille>
    </Client>
    j'ajoute un matériel (exemple un moteur asynchrone) :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <Client xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Société Nom="Bigard">
        <Adresse Ville="" C_Postal="" Rue="">
          <Téléphone Numéro="" Nom="" />
          <Adresse_Mail Mail="" Nom="" />
        </Adresse>
      </Société>
      <Matériel Type_De_Produit="Moteur Asynchrone.">
        <Référence Marque="Sew" Num_Série="123456789" V_Input="230/400V" V_Output="" RPM="3000" Ref_Codeur="" Puissance="4kW" />
      </Matériel>
      <Feuille Nom="Divers">
        <Interventions Num_Facture="G12" Date="24/02/2015" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 1" />
        <Interventions Num_Facture="G12" Date="24/02/2015" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 1/2" />
      </Feuille>
      <Feuille Nom="Prog">
        <Interventions Num_Facture="" Date="" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 2" />
      </Feuille>
    </Client>
    J'ajoute un second moteur asynchrone et mon fichier deviens :

    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
    <?xml version="1.0" encoding="utf-8"?>
    <Client xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Société Nom="Bigard">
        <Adresse Ville="" C_Postal="" Rue="">
          <Téléphone Numéro="" Nom="" />
          <Adresse_Mail Mail="" Nom="" />
        </Adresse>
      </Société>
      <Matériel Type_De_Produit="Moteur Asynchrone.">
        <Référence Marque="Sew" Num_Série="123456789" V_Input="230/400V" V_Output="" RPM="3000" Ref_Codeur="" Puissance="4kW" />
        <Référence Marque="Sew usocome" Num_Série="56879" V_Input="230/400V" V_Output="" RPM="3000" Ref_Codeur="" Puissance="10kW" />
      </Matériel>
      <Matériel Type_De_Produit="Moteur Asynchrone.">
        <Référence Marque="Sew" Num_Série="123456789" V_Input="230/400V" V_Output="" RPM="3000" Ref_Codeur="" Puissance="4kW" />
        <Référence Marque="Sew usocome" Num_Série="56879" V_Input="230/400V" V_Output="" RPM="3000" Ref_Codeur="" Puissance="10kW" />
      </Matériel>
      <Feuille Nom="Divers">
        <Interventions Num_Facture="G12" Date="24/02/2015" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 1" />
        <Interventions Num_Facture="G12" Date="24/02/2015" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 1/2" />
      </Feuille>
      <Feuille Nom="Prog">
        <Interventions Num_Facture="" Date="" Produit="" Opération="Ben Voila !!!&#xA;J'y arrive 2" />
      </Feuille>
    </Client>
    j'ai un peut modifier mon code et il est a présent comme 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
    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
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    Public Class Ajouter_matériel
        Dim ComboBox As New ComboBox 'Créé une nouvelle Combobox nommée ComboBox.'
        Dim Label As New List(Of Label) 'Créé une nouvelle liste de Label nommée Label.'
        Dim TextBox As New List(Of TextBox) 'Créé une nouvelle liste de TextBox nommée TextBox.'
        Dim Boutons As New List(Of Button) 'Créé une nouvelle liste de Button nommée Boutons.'
        Dim type_produit As String = "" 'Créé une chaine de caractères nommée type_produit.'
        Dim Police_Labels As Font
     
        Private Sub Ajouter_matériel_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'S'exécute lors du chargement de la fenêtre.'
     
            With ComboBox 'Avec le terme "ComboBox",'
                .Visible = True 'La combobox sera visible dès le chargement de la fenêtre d'ajout de matériel.'
                .DropDownStyle = ComboBoxStyle.DropDownList 'Définit la ComboBox comme non modifiable par l'utilisateur.'
                .Width = 150 'Règle la largeur de la ComboBox à 150 pixels.'
     
                With .Items 'Avec le terme ".Items",'
                    .Add("Moteur Asynchrone.") 'Ajouter l'item "Moteur Asynchrone.".'
                    .Add("Moteur Brushless.") 'Ajouter l'item "Moteur Brushless.".'
                    .Add("Motoréducteur.") 'Ajouter l'item "Motoréducteur.".'
                    .Add("Variateur.") 'Ajouter l'item "Variateur.".'
                    .Add("Poste à souder.") 'Ajouter l'item "Poste à souder.".'
                    .Add("Découpeur Plasma.") 'Ajouter l'item "Découpeur Plasma.".'
                    .Add("Chargeur Démarreur.") 'Ajouter l'item "Chargeur Démarreur.".'
                    .Add("Autre.") 'Ajouter l'item "Autre.".'
                End With
     
            End With
     
            For i As Integer = 0 To 1
     
                Boutons.Add(New Button) 'Ajoute un nouveau Button à la liste Boutons."
                Boutons(i).Width = 150 'Définit la largeur du Button créé.'
                AddHandler Boutons(i).Click, AddressOf Boutons_Click 'Créé un événement lors d'un clic sur le nouveau Button, et lance le sous-programme Boutons_Click.'
     
            Next
     
            FlowLayoutPanel.AutoScroll = True 'Donne au FlowLayoutPanel la possibilité d'addapter une barre de défillement si necessaire.'
            FlowLayoutPanel.Controls.Add(ComboBox) 'Ajoute la ComboBox dans le FlowLayoutPanel.'
     
            AddHandler ComboBox.SelectedIndexChanged, AddressOf ComboBox_ChangeIndex 'Créé un événement lorsque l'élément dans la comboBox est changé par l'utilisateur.'
     
        End Sub
     
        Private Sub ComboBox_ChangeIndex() 'S'exécute lorsque un item de la ComboBox est changé.'
     
            Label.Clear() 'Supprime tous les Labels dans la liste "Label".'
            TextBox.Clear() 'Supprime toutes les TextBox dans la liste "TextBox".'
            FlowLayoutPanel.Controls.Clear() 'Supprime tous les controles présents dans le "FlowLayoutPanel".'
            ComboBox.Height = 40 'Change la hauteur de la ComboBox pour une bonne mise en page.'
            FlowLayoutPanel.Controls.Add(ComboBox) 'Ajoute la ComboBox avec sa nouvelle taille dans le "FlowLayoutPanel".'
     
            If ComboBox.SelectedIndex = 0 Or ComboBox.SelectedIndex = 3 Or ComboBox.SelectedIndex = 6 Or ComboBox.SelectedIndex = 7 Then 'Si l'item sélectionné dans la ComboBox est "Moteur Asynchrone." ou "Variateur." ou "Chargeur Demarreur." ou "Autre.",'
     
                For i As Integer = 0 To 4 'Boucle de 4 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 4.'
     
                If ComboBox.SelectedIndex = 0 Then 'Si l'item sélectionné dans la ComboBox est "Moteur Asynchrone.",'
                    Label(3).Text = "Rotation par minutes :" 'Définit le texte du Label(3).'
                Else 'Sinon (si l'item sélectionné dans la ComboBox est "Variateur." ou "Chargeur Demarreur." ou "Autre",)
                    Label(3).Text = "Tension de sortie :" 'Définit le texte du Label(3).'
                End If 'Fin de la condition.'
     
                Label(4).Text = "Puissance :" 'Définit le texte du Label(4).'
     
            ElseIf ComboBox.SelectedIndex = 1 Then 'Sinon si l'item sélectionné dans la ComboBox est "Moteur Brushless",'
     
                For i As Integer = 0 To 5 'Boucle de 5 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 5.'
     
                Label(3).Text = "Rotation par minutes :" 'Définit le texte du Label(3).'
                Label(4).Text = "Référence du codeur :" 'Définit le texte du Label(4).'
                Label(5).Text = "Puissance :" 'Définit le texte du Label(5).'
     
            ElseIf ComboBox.SelectedIndex = 2 Then 'Sinon si l'item sélectionné dans la ComboBox est "Motoréducteurs",'
     
                For i As Integer = 0 To 7 'Boucle de 7 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 7.'
     
                Label(3).Text = "Rotation par minutes :" 'Définit le texte du Label(3).'
                Label(4).Text = "Marque du réducteur :" 'Définit le texte du Label(4).'
                Label(5).Text = "N° de série du réducteur :" 'Définit le texte du Label(5).'
                Label(6).Text = "Rapport de réduction :" 'Définit le texte du Label(6).'
                Label(7).Text = "Puissance :" 'Définit le texte du Label(7).'
     
            ElseIf ComboBox.SelectedIndex = 4 Or ComboBox.SelectedIndex = 5 Then 'Sinon si l'item sélectionné dans la ComboBox est "Poste à souder" ou "Découpeur Plasma",'
     
                For i As Integer = 0 To 3 'Boucle de 3 rotations. Chaque rotation ajoute +1 à i.'
                    Mise_En_Page_Ajout_Matériel(i) 'Lance le sous programme "Mise_En_Page_Ajout_Matériel" et lui envoie la valeur de i.'
                Next 'Ajoute +1 à i tant que i est différent de 3.'
     
                Label(3).Text = "Puissance :" 'Définit le texte du Label(3).'
     
            End If 'Fin de la condition.'
     
            FlowLayoutPanel.SetFlowBreak(ComboBox, True) 'Oblige l'interface à aller à la ligne après la ComboBox dans le FlowLayoutPanel.'
     
            ComboBox.Height = 21 'Définit la hauteur de la ComboBox à 21 pixels.'
            Label(0).Text = "Marque :" 'Définit le texte du Label(0).'
            Label(1).Text = "N° de série :" 'Définit le texte du Label(1).'
            Label(2).Text = "Tension d'alimentation :" 'Définit le texte du Label(2).'
     
            For i As Integer = 0 To 1 'Boucle de 1 rotations. Chaque rotation ajoute +1 à i.'
                FlowLayoutPanel.Controls.Add(Boutons(i)) 'Ajoute le "Boutons(i)" créé au chargement de la fenêtre dans le "FlowLayoutPanel".'
            Next 'Ajoute +1 à i tant que i est différent de 1.'
     
            Boutons(0).Text = "Annuler" 'Définit le texte du Boutons(0).'
            Boutons(1).Text = "Enregistrer" 'Définit le texte du Boutons(1).'
     
        End Sub
     
        Private Sub Boutons_Click() 'S'exécute lors d'un clic sur un des 2 Boutons créé lors du chargement de la fenêtre.'
     
            Matériel_Client.Référence.Add(New Référence)
            Nom_Client.Matériel.Add(Matériel_Client) 'Ajoute le matériel client au client.'
     
            If Boutons(0).Focused Then 'Si c'est un clic sur le bouton "Annuler", alors :'
     
                Lecture_Fiche_Client.Show() 'Affiche la page d'accueuil.'
                Me.Close() 'Ferme la fenêtre en cours.'
     
            Else 'Sinon, si c'est un clic sur le bouton "Enregistrer,"
     
                If ComboBox.SelectedIndex <> 7 Then 'Si l'item sélectionné dans la ComboBox est différent de "Autre :", alors :'
     
                    Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Type_Produit = ComboBox.SelectedItem 'Le type de produit dans matériel client est égal au texte de l'item sélectionné dans la ComboBox.'
                    Enregistrement_Matériel() 'Exécute le sous-programme Enregistrement_Matériel.'
     
                Else 'Sinon, si l'item sélectionné dans la ComboBox est "Autre ",'
     
                    type_produit = InputBox("Quel est le type de produit ?", "Type de produit.") 'Créé une fenêtre de saisie pour nommer le produit et entre ce nom dans la variable "type_produit".'
     
                    If type_produit <> "" Then 'Si la variable type_produit contient du texte, alors :' 
     
                        Matériel_Client.Type_Produit = "Autre : " & type_produit 'Type_Produit prends la valeur "Autre : " suivit de la valeur de type_produit. 
                        Enregistrement_Matériel() 'Exécute le sous-programme Enregistrement_Matériel.'
     
                    End If 'Fin de la condition.'
     
                End If 'Fin de la condition.'
     
            End If 'Fin de la condition.'
     
        End Sub
     
        Private Sub Mise_En_Page_Ajout_Matériel(i As Integer)
     
            Label.Add(New Label) 'Ajoute un nouveau Label dans la liste Label.'
            TextBox.Add(New TextBox) 'Ajoute une nouvelle TextBox dans la liste TextBox.'
     
            With Label(i) 'Avec le terme Label(i), (i = numéro de rotation)'
                .Height = TextBox(i).Height 'Règle la hauteur du Label(i) au même niveau que la hauteur de la TextBox(i).'
                .Width = 150 'Règle la largeur du Label(i) à 150 pixels.'
                .TextAlign = ContentAlignment.MiddleLeft 'Définit l'alignement du texte contenu dans le Label(i) comme centré à gauche.'
                .Font = New Font("Comic Sans Ms", 10.0!, FontStyle.Bold, GraphicsUnit.Point, CType(0, Byte))
            End With
     
            TextBox(i).Width = 150 'Définit la largeur de la TextBox(i) à 150 pixels.'
            FlowLayoutPanel.Controls.Add(Label(i)) 'Ajoute le Label(i) dans le FlowLayoutPanel.'
            FlowLayoutPanel.Controls.Add(TextBox(i)) 'Ajoute la TextBox(i) dans le FlowLayoutPanel.'
            FlowLayoutPanel.SetFlowBreak(TextBox(i), True) 'Oblige l'interface à aller à la ligne après chaque TextBox(i) dans le FlowLayoutPanel.'
     
        End Sub
     
        Private Sub Enregistrement_Matériel()
     
            If ComboBox.SelectedIndex = 0 Then 'Si combobox = Moteur Asynchrone :
     
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Marque = TextBox(0).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Num_Série = TextBox(1).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Tension_Entrée = TextBox(2).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Rotations_Par_Minutes = TextBox(3).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Puissance = TextBox(4).Text
     
            ElseIf ComboBox.SelectedIndex = 1 Then 'Si combobox = moteur brushless
     
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Marque = TextBox(0).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Num_Série = TextBox(1).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Tension_Entrée = TextBox(2).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Rotations_Par_Minutes = TextBox(3).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Référence_Codeur = TextBox(4).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Puissance = TextBox(5).Text
     
            ElseIf ComboBox.SelectedIndex = 2 Then 'si combobox = motoréducteur
     
                Matériel_Client.Référence(Matériel_Client.Référence.Count - 1).Référence_Réducteur.Add(Réducteur)
                'TextBox(0).Text
                'TextBox(1).Text
                'TextBox(2).Text
                'TextBox(3).Text
                'TextBox(4).Text
                'TextBox(5).Text
                'TextBox(6).Text
                'TextBox(7).Text
     
            ElseIf ComboBox.SelectedIndex = 4 Then 'si combobox = variateur
     
                'TextBox(0).Text
                'TextBox(1).Text
                'TextBox(2).Text
                'TextBox(3).Text
     
            ElseIf ComboBox.SelectedIndex = 5 Then 'si combobox = poste à souder
     
                'TextBox(0).Text
                'TextBox(1).Text
                'TextBox(2).Text
                'TextBox(3).Text
     
            Else
     
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Marque = TextBox(0).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Num_Série = TextBox(1).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Tension_Entrée = TextBox(2).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Tension_Sortie = TextBox(3).Text
                Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence(Nom_Client.Matériel(Nom_Client.Matériel.Count - 1).Référence.Count - 1).Puissance = TextBox(4).Text
     
            End If
     
            Enregistre_Fiche_Client(Fichier_Client, Nom_Client) 'Lance le sous programme d'enregistrement, qui va enregistrer dans le fichier client, le nouveau matériel.'
     
            If Not Erreur Then 'Si aucune erreur ne ce produit lors de l'enregistrement, alors :'
                MsgBox("Matériel ajouté au client " & Nom_Client.Société.Nom & " avec succes.", MsgBoxStyle.Information, "Opération Réussie.") 'Affiche un message comme quoi tout c'est bien déroulé.'
            End If 'Fin de la condition.'
     
        End Sub
     
    End Class
    si vous voulez l'autre partie je peux vous la donner mais mon problème de proviens pas de mon autre partie, du moins je ne pense pas.

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

Discussions similaires

  1. Problème lors de la suppression d'un enregistrement
    Par Salamander24 dans le forum Modélisation
    Réponses: 3
    Dernier message: 15/03/2008, 15h30
  2. [SQL] Problème lors de l'insertion d'un enregistrement dans ma base de données.
    Par Velkan.nexus dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/10/2007, 11h59
  3. Réponses: 1
    Dernier message: 24/08/2006, 23h35
  4. Liste : Pb lors du second enregistrement
    Par Rouanou dans le forum Access
    Réponses: 11
    Dernier message: 24/11/2005, 15h53

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