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 :

Enregistrer plusieurs noms avec plusieurs Array codes


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 260
    Points : 120
    Points
    120
    Par défaut Enregistrer plusieurs noms avec plusieurs Array codes
    Salut tout le monde
    Svp j'ai vraiment besoin d'aide poir resoudre ce probleme
    Avec CheckedListBox1 .. je choisis un seul nom ou plusieurs noms a la fois pour les enregistrer dans ma base de donnee .. lorsque j'utilise uniquement un seul Array_Code tout fonctionne tres tres bien .. comme ca :
    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
            Dim Array_Name As New ArrayList
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) Then
                    Array_Name.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Name"))
                End If
            Next
            If Array_Name.Count = 0 Then Exit Sub
     
            Dim Array_Code As New ArrayList
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) Then
                    Array_Code.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Code"))
                End If
            Next
            Dim cmd As New OleDbCommand("INSERT INTO Table1( Employe_Code , Presence_Date) VALUES ( @Ccode , @Ddate)", Conne)
            Conne.Open()
            For Each Ccode In Array_Code
                cmd.Parameters.Clear()
                cmd.Parameters.AddWithValue("@Ccode", Ccode)
     
                cmd.Parameters.AddWithValue("@Ddate", Me.DateTimePicker1.Value.Date)
                cmd.ExecuteNonQuery()
            Next
            Conne.Close()
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                Me.CheckedListBox1.SetItemChecked(i, False)
            Next
    Mais lorsque je veux ajouter un autre Array_Name ( Employe_Name ) dans mon code qui se sera comme ca :
    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
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim Array_Name As New ArrayList
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) Then
                    Array_Name.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Name"))
                End If
            Next
            If Array_Name.Count = 0 Then Exit Sub
     
            Dim Array_Code As New ArrayList
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) Then
                    Array_Code.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Code"))
                End If
            Next
     
            Dim cmd As New OleDbCommand("INSERT INTO Table1( Employe_Code , Employe_Name , Presence_Date) VALUES ( @Ccode , @Nname , @Ddate)", Conne)
            Conne.Open()
            For Each Ccode In Array_Code
     
                For Each Nname In Array_Name
                    cmd.Parameters.Clear()
                    cmd.Parameters.AddWithValue("@Ccode", Ccode)
                    cmd.Parameters.AddWithValue("@Nname", Nname)
                    cmd.Parameters.AddWithValue("@Ddate", Me.DateTimePicker1.Value.Date)
                    cmd.ExecuteNonQuery()
     
                Next
            Next
     
            Conne.Close()
     
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                Me.CheckedListBox1.SetItemChecked(i, False)
            Next
        End Sub
    Le probleme si par exemple je coche 3 noms dans ma CheckedListBox1 .. alors je trouve dans ma base de donnee ces trois nom en double 3 fois comme l'indique cette image :
    Nom : 1.png
Affichages : 72
Taille : 13,1 Ko
    Comment faire svp poir inserer un deuxieme Array ( For Each Nname In Array_Name ) dans mon code
    Merci beaucoup d'avance pour l'aide
    Cordialement
    MADA

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 717
    Points : 5 358
    Points
    5 358
    Par défaut
    Tu as deux problèmes.
    Déjà tu as deux listes différentes pour stocker tes codes et tes noms.
    Ensuite tu as une boucle imbriquée dans une autre, ce qui fait que tu boucles trois fois sur le code et à l'intérieur tu boucles trois fois sur le nom (3*3=9, le compte est bon).

    De manière générale, il y a beaucoup trop de boucles dans ton code !
    En faisant ta boucle FOR sur CheckedListBox1 directement après l'open de la connexion, tu économises déjà deux boucles inutiles.

  3. #3
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 260
    Points : 120
    Points
    120
    Par défaut
    Bonjour popo
    Merci beaucoup pour l'intention d'aide
    En realite c'est ma premiere fois que j'utilise CheckedListBox et aussi le mots Array .. pour cela j'ai pas pu manipiler ce cauchemar
    Amicalement
    MADA

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 717
    Points : 5 358
    Points
    5 358
    Par défaut
    Avez-vous au moins essayé de déplacer votre boucles comme indiqué.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
            Dim cmd As New OleDbCommand("INSERT INTO Table1( Employe_Code , Presence_Date) VALUES ( @Ccode , @Ddate)", Conne)
            Conne.Open()
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) Then
                    Name = Array_Name.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Name"))
                    Code = Array_Code.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Code"))
     
                    ....
                End If
            Next
     
            Conne.Close()
    Manipuler un tableau, ce n'est pas un cauchemar, c'est même trivial.
    C'est vraiment du niveau débutant.
    A un moment, il va falloir ouvrir un tutoriel.

    Ce n'est pas la première fois que je constate que vous attendez qu'on vous donne la solution toute prête.
    Comme sur ce POST : https://www.developpez.net/forums/d2.../#post11993372

    Notre rôle n'est pas de vous donner directement la solution mais de vous donner les éléments pour que vous trouviez tout seul la solution.
    De cette manière, on vous amène à vous former, en lisant la doc, à vous poser des questions, à réfléchir à un moyen d'utiliser les ressources qu'on vous donner et à assembler les informations utiles.


    Si vous voulez du code tout cuit dans le bec sans même essayer de le comprendre ou sans même ouvrir un tutoriel pour débutant, vous n'êtes pas au bon endroit.
    Demandez plutôt à Chat GPT.

  5. #5
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 260
    Points : 120
    Points
    120
    Par défaut
    Bonjour popo
    Merci beaucoup pour l'intervention
    Tres gentil de votre part
    J'ai essayé de cette maniere mais malheureusement j'ai pas reussi
    J'ai pas reussi .. ou je pose ces deux codes ( For Each Ccode In Array_Code .... For Each Nname In Array_Name )

    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
           Dim Array_Code As New ArrayList
            Dim Array_Name As New ArrayList
     
            Dim cmd As New OleDbCommand("INSERT INTO Table1( Employe_Code , Employe_Name , Presence_Date) VALUES ( @Ccode , @Nname , @Ddate)", Conne)
            Conne.Open()
     
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) Then
     
                    For Each Ccode In Array_Code
                        For Each Nname In Array_Name
                            Ccode = Array_Name.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Name"))
                            Nname = Array_Code.Add(Me.CheckedListBox1.Items(i)("EMPLOYE_Code"))
     
                            cmd.Parameters.Clear()
                            cmd.Parameters.AddWithValue("@Ccode", Ccode)
                            cmd.Parameters.AddWithValue("@Nname", Nname)
                            cmd.Parameters.AddWithValue("@Ddate", Me.DateTimePicker1.Value.Date)
                            cmd.ExecuteNonQuery()
     
                        Next
                    Next
                End If
            Next
     
            Conne.Close()
     
                    For i = 0 To Me.CheckedListBox1.Items.Count - 1
                        Me.CheckedListBox1.SetItemChecked(i, False)
                    Next
    Cordialement
    MADA

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 717
    Points : 5 358
    Points
    5 358
    Par défaut
    Je vous ai pourtant dit que vous faisiez beaucoup trop de boucles inutiles.
    Bon là, c'est un peu ma faute, j'ai glissé une erreur dans le code que je vous ai donné.

    Essayez, de partir de ce code.
    L'idée est d'ajouter des lignes de codes uniquement là où il y a le commentaire (donc rien avant la ligne 1 et rien après la ligne 11.
    Indice supplémentaire : vous n'avez pas besoin de Array_Code ni de Array_Name.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim cmd As New OleDbCommand("INSERT INTO Table1( Employe_Code , Presence_Date) VALUES ( @Ccode , @Ddate)", Conne)
            Conne.Open()
            For i = 0 To Me.CheckedListBox1.Items.Count - 1
                If Me.CheckedListBox1.GetItemChecked(i) Then
                    Name = Me.CheckedListBox1.Items(i)("EMPLOYE_Name")
                    Code = Me.CheckedListBox1.Items(i)("EMPLOYE_Code")
     
                    'Ajouter du code ici
                End If
            Next
            Conne.Close()

  7. #7
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 260
    Points : 120
    Points
    120
    Par défaut
    Merci popo .. grand merci

    ( Indice supplémentaire : vous n'avez pas besoin de Array_Code ni de Array_Name. )

    Comment definir donc ces deux mots ( Name - Code ) au dessous

    Name = Me.CheckedListBox1.Items(i)("EMPLOYE_Name")
    Code = Me.CheckedListBox1.Items(i)("EMPLOYE_Code")

    Merci beaucoup d'avance pour l'aide
    MADA

  8. #8
    Membre régulier Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 260
    Points : 120
    Points
    120
    Par défaut
    Merci popo pour l'aide
    Tres gentil de votre part
    C bien resolu
    Cordialement
    MADA

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 717
    Points : 5 358
    Points
    5 358
    Par défaut
    Il suffit de les déclarer avec Dim comme n'importe quelle variable.

    Je vois que vous avez trouvé tout seul.
    C'est bien.

    Et donc vous avez abouti à quel code ?

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

Discussions similaires

  1. Enregistrer plusieurs feuille en PDF avec nom d'une cellule
    Par Le Samaritain dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/01/2020, 21h34
  2. Enregistrement plusieurs onglets (nom variable) en pdf
    Par tropfr0 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/08/2018, 12h58
  3. Réponses: 0
    Dernier message: 11/10/2017, 11h14
  4. [XL-2010] Impression de plusieurs graphiques dans le même PDF avec un array
    Par Peall13 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/08/2016, 17h56
  5. Réponses: 4
    Dernier message: 17/11/2008, 22h04

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