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 :

Update 42 differents textbox in a form


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut Update 42 differents textbox in a form
    Bonjour,
    Mon code ici se sépare en 3 parties, la première "ReadFirstLastName" fonctionne parfaitement, c'est-à-dire que les champs FirstName1 et LastName1 du formulaire "ACLoginForm" reçoivent leurs champs respectifs de la requête, donc, les champs "FirstName" et "LastName" de la requête qui ne contenait qu'un seul enregistrement car c'est ce que la requête demandait avec AutoID=1 - En regardant la requête vous comprendrez ce que je veux expliquer ici.

    Voici la situation, dans ma table "Employees", il y a actuellement 3 enregistrements, cependant, mon formulaire a été conçu pour recevoir un maximum de 42 "FirstName" (textbox) et 42 "LastName" (textbox) et 42 Empl (boutons) soit de FirstName1 à LastName42 (84 items) et Empl1 à Empl42 soit les 42 boutons qui contiennent les photos des employés.
    Ce qui fait un total de 84 textbox et 42 boutons s'il y avait 42 employés dans la table "Employees
    ".
    Donc, vu qu'il n'y a que 3 employés il n'y a que 6 textbox à compléter soit de FirstName1 à LastName6 et 3 boutons (Empl1 à Empl3), les autres champs ne doivent pas apparaître si par exemple l'enregistrement 4 n'existe pas il y a 3 items dans mon formulaire qui ne devraient pas apparaître, soit FirstName4, LastName4 et Empl4. de même que tous les autres après. Les items FirstName5 jusqu'à LastName42 ainsi que leurs boutons respectifs Empl5 à Empl42 ne devraient pas être visible non plus.

    J'espère que le code et l'image ci-dessous seront mieux vous expliquer.

    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
    Private sub ReadFirstLastName()
        Dim SQLCon As New SqlConnection With {.ConnectionString = "Server=CLAUDE-PC\AUTOCAISSESQL;database=ACData;User=programmeur;Pwd=mANONbENOIT1954;"}
        Dim SQLcmd As SqlCommand
        Dim READER As SqlDataReader
            Try
          	SQLCon.Open()
    	    Dim Query As String
    	        Query = "SELECT AutoID, FirstName, LastName, Active FROM Employees WHERE AutoID = 1 And Active =1"
    	        SQLcmd = New SqlCommand(Query, SQLCon)
    	        READER = SQLcmd.ExecuteReader
     
    	            While READER.Read
    		            Me.FirstName1.Text = READER.Item(1)
                        Me.LastName1.Text = READER.Item(2)
    	            End While
     
    	    SQLCon.Close()
                    Catch ex As Exception
    	                MessageBox.Show(ex.Message)
                    Finally
    	    SQLCon.Dispose()
                    End try
    End sub
     
    Public Sub LoadFirstNameAndLastName()
        Dim SQLCon As New SqlConnection With {.ConnectionString = "Server=CLAUDE-PC\AUTOCAISSESQL;database=ACData;User=programmeur;Pwd=mANONbENOIT1954;"}
        Dim SQLcmd As SqlCommand
        Dim READER As SqlDataReader
            Try
          	SQLCon.Open()
    	    Dim Query As String
    	    Query = "SELECT AutoID, FirstName, LastName, Active FROM Employees WHERE Active =1"
    	    SQLcmd = New SqlCommand(Query, SQLCon)
    	    READER = SQLcmd.ExecuteReader
     
    	        While READER.Read
                    Dim i As Integer
                    For i = 1 To 42
                    Me.FirstName1.Text = READER.Item(1)
                    Me.LastName1.Text = READER.Item(2)
                    Next
    	        End While
    	    SQLCon.Close()
            Catch ex As Exception
    	        MessageBox.Show(ex.Message)
            Finally
    	    SQLCon.Dispose()
            End try
    End sub
    Private Sub ACLoginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ReadFirstLastName()
        'LoadFirstNameAndLastName()
    End Sub
    Nom : Questions sur multiples textbox.jpg
Affichages : 181
Taille : 281,3 Ko

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    quelqu'un qui fait une appli et qui ne sait pas à l'avance combien de choses il doit afficher, et que ca peut être 800, tu crois qu'il poserait 800x plusieurs textboxes ?

    flowlayoutpanel + usercontrol + controls.Add
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut Sûrement pas, c'est pourquoi un débutant demande de l'aide
    Bonjour,
    Super, tu m'as ouvert les yeux, j'ai supprimé les 84 boîtes de texte et j'ai simplement inscrit le nom du champ Username de la requête comme caption sur le bouton de cette façon:

    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
        Private sub GetButtonCaption()
            Dim SQLCon As New SqlConnection With {.ConnectionString = "Server=CLAUDE-PC\AUTOCAISSESQL;database=ACData;User=programmeur;Pwd=mANONbENOIT1954;"}
            Dim SQLcmd As SqlCommand
            Dim READER As SqlDataReader
                Try
          	    SQLCon.Open()
    	        Dim Query As String
    	            Query = "SELECT AutoID, FirstName, LastName, Username, Active FROM EmployeesQuery WHERE AutoID = 1 And Active =1"
    	            SQLcmd = New SqlCommand(Query, SQLCon)
    	            READER = SQLcmd.ExecuteReader
     
    	                While READER.Read
    		                Me.Empl1.Text = READER.Item(3)
    	                End While
     
    	        SQLCon.Close()
                        Catch ex As Exception
    	                    MessageBox.Show(ex.Message)
                        Finally
    	        SQLCon.Dispose()
                        End try
        End sub
     
        Private Sub ACLoginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            GetButtonCaption()
        End Sub
    Et tout fonctionne pour le bouton Empl1, il ne me reste plus qu'à trouver le code pour que le champ Username pour les 42 enregistrements s'ils existent aillent se reporter automatiquement lors de l'ouverture du formulaire sur les boutons de Empl1 à Empl42.

    Il faut également garder en mémoire que s'il n'y a que 3 employés, les boutons de Empl4 à Empl42 doivent être invisibles.
    Mais c'est maintenant beaucoup plus simple.

    Merci

    Claude du Québec. Canada

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Je n'ai guère de temps à te consacrer aujourd'hui, mais voici tout de même quelque chose ...

    Une boucle While Read parcoure automatiquement tous les enregistrements fournis par la DataReader : il ne te faut donc pas écrire une boucle For ... à l'intérieur. Dans l'exemple que j'ai envoyé hier, je note dans le commentaire que dans le cas de cet exemple, il n'y a qu'un seul enregistrement, je pouvais faire sans While, je l'ai laissé à titre didactique, et je vois que ça t'a servi ... .

    Dans le cas où tu as de nombreux composants de même type et que tu dois modifier certaines de leurs propriétés à la demande, je te suggère de créer un tableau de ces objets et d'y accéder ensuite par leurs indices, c'est facile dans les boucles.

    Voici un exemple où les boutons sont stockés dans un tableau et modifiés ensuite à la carte. Le procédé implique que les composants (Button, TextBox, Label, ...) concernés soient déposés SUCCESSIVEMENT sur le Form et que tu connaisses l'indice du premier. Le code ci-dessous traite 16 bontons déposés de cette manière, de sorte qu'il portent les noms de Button1 à Button16. Ce 1 à 16 est important pour pouvoir mettre les 16 boutons dans le tableau MesBoutons et ils sont ensuite accessibles par MesBoutons(1) à MesBoutons(16). Voici le projet AntoScalling.zip d'où est extrait ce code, tu pourras tester à loisir ...

    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
     
        Dim MesBoutons(16) As Button   ' Indices de 0 à 16 mais seulement usage de 1 à 16.
     
        Private Sub FMuchoBotons_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
     
            ' Pour affecter les numéros des boutons aux label
            For L As Integer = 1 To 16
                Me.Controls("Label" & L).Text = L
            Next
     
            ' Pour charger tous les boutons dans le tableau des boutons
            For B As Integer = 1 To 16
                MesBoutons(B) = Me.Controls("Button" & B)
            Next
     
            ' Pour changer tous les textes des boutons en "Bouton n° xx"
            For B As Integer = 1 To 16
                MesBoutons(B).Text = "Bouton n°" & B
            Next
     
    ' ... ... ...
    Bonne journée,


  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut Ce dernier code a changé tous les boutons
    Bonjour,
    Oui, le dernier segment de code que tu as inscrit qui provient de la table solution MuchoBotons change le texte de tous les boutons de Bouton N° 1 à Bouton N° 42, cependant c'est le nom "Username" de la requête qu'on veut voir, et ça c'est plus difficile.

    Je suis rendu là dans ce travail:

    Lorsque je démarre la solution, le formulaire "ACLoginForm" s'ouvre et le Username qui a le champ "EmployeeNumber" 42 s'affiche automatiquement dans le "Button1" ce devrait être plutôt le Username "Claude Larocque" qui est le EmployeeNumber 1 surtout que ma requête est par ordre ascendant sur ce champ.

    Vu que je ne sais pas exactement le code complet pour que tous les Username se retrouve sur le bouton respectif, c'est-à-dire "Button1" à "Button42" j'inscris mon code ici et une image, espérons qu'il y a quelqu'un qui pourra solutionner ce puzzle.

    Je comprends parfaitement que la section suivante ne peut afficher qu'un seul username, mais ne devrait-il pas être Claude Larocque?
    Me.Button1.Text =MyEmployees.Item(3)

    Voici l'image de quelques boutons:
    Nom : Update seulement Button1.jpg
Affichages : 128
Taille : 73,0 Ko
    Nom : Liste des employés.jpg
Affichages : 181
Taille : 235,2 Ko
    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
        Private Sub LoadFirstAndLastNamesOnButtons()
     
            Dim MyConnexion As New SqlConnection
            Dim MyCommande As New SqlCommand
     
            MyConnexion.ConnectionString = "Server=CLAUDE-PC\AUTOCAISSESQL;database=ACData;User=sa;Pwd=mANONbENOIT1954***;"
            MyConnexion.Open()
     
            MyCommande = MyConnexion.CreateCommand()
            MyCommande.CommandType = CommandType.Text
            MyCommande.CommandText = "SELECT EmployeeNumber, FirstName, LastName, Username, Active FROM EmployeesQuery WHERE Active =1  ORDER BY EmployeeNumber ASC"
     
            Dim MyEmployees As SqlDataReader     ' Déclaration d'un objet DataReader
            MyEmployees = MyCommande.ExecuteReader()   ' La requête SELECT * retourne DES valeurs
            Do While MyEmployees.Read ' qui sont stockées dans l'objet DataReader !! Il n'y ici qu'un seul enregistrement, EN PRINCIPE
     
             Me.Button1.Text =MyEmployees.Item(3)
     
            Loop
            MyEmployees.Close()
            MyCommande.Dispose()
            MyConnexion.Close()
    	End Sub
     
        Private Sub ACLoginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            LoadFirstAndLastNamesOnButtons()
        End Sub

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    Là, je te propose un essai que je ne teste pas moi-même. C'est donc pas garanti ...

    Je suppose que tes boutons sont bien numérotés de 1 à 42 mais je vois que tu ne les pas mis dans un tableau.
    Je vais donc créer ce tableau (comme dans l'exemple que je t'ai envoyé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ' au niveau global du Form :
        Dim MesBoutons(42) As Button   ' Indices de 0 à 42 mais seulement usage de 1 à 42.
     
    ' et une procédure pour charger le tableau :
     
    Private Sub ChargeMesBoutons()
            For B As Integer = 1 To 42
                MesBoutons(B) = Me.Controls("Button" & B)
            Next
    End Sub
    Maintenant, je peux modifier ton code comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ' ...
            ChargeMesBoutons()  ' !!! Ne pas oublier 
            Dim MyEmployees As SqlDataReader     ' Déclaration d'un objet DataReader
            MyEmployees = MyCommande.ExecuteReader()   
            Do While MyEmployees.Read ' qui sont stockées dans l'objet DataReader !! Il n'y ici qu'un seul enregistrement, EN PRINCIPE
     
               MesBoutons(CType(MyEmployees.Item(0), Integer)).Text =MyEmployees.Item(3)
     
            Loop
    Sauf erreur de ma part, CType(MyEmployees.Item(0), Integer) doit te donner le numéro de l'employé, sous forme d'un entier, et doit servir d'indice pour désigner le bouton à traiter.
    Attention de ne pas oublier de charger le tableau des boutons.

    Cela devrait marcher ...
    Si besoin, je suis encore là pour au moins 1 heure.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut BINGO! Tout fonctionne parfaitement
    Merci, l'image ci-dessous montre bien que la lecture de ma base de données SQL est parfaite et le texte sur tous les boutons est parfait également.

    Je mets également mon code car j'ai une petite requête, j'aimerais que si le prénom (FirstName) de l'employé est "EMPLOYEE" ou que le champ Active = 0 alors le bouton correspondant au champ "EmployeeNumber" soit invisible, donc dans l'image ci-dessous les boutons Empl7 à Empl42 seraient invisibles. Dans ma base de données si j'inscris un nouvel employé je voudrais que le bouton correspondant soit visible de nouveau.
    J'ai également placé "Dim ReadOnly MesBoutons(42) As Button" au niveau du formulaire comme indiqué, j'ai dû inscrire ReadOnly à cause d'une erreur s'il ne l'était pas, mais ça fonctionne.

    Je vais essayer de trouver, mais c'est certain qu'un expert devrait savoir mieux qu'un débutant en VB.NET, Merci de prendre le temps de m'aider.


    Le nom des boutons est Empl1 à Empl42 (Voir code)
    Nom : FormulaireOK.jpg
Affichages : 119
Taille : 265,6 Ko

    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
    Private Sub ChargeMesBoutons()
            For B As Integer = 1 To 42
                MesBoutons(B) = Me.Controls("Empl" & B)
            Next
    End Sub
     
    	Private Sub LoadUsernamesOnButtons()
     
            Dim MyConnection As New SqlConnection
            Dim MyCommande As SqlCommand
     
            MyConnection.ConnectionString = "Server=CLAUDE-PC\AUTOCAISSESQL;database=ACData;User=sa;Pwd=mANONbENOIT1954***;"
            MyConnection.Open()
     
            MyCommande = MyConnection.CreateCommand()
            MyCommande.CommandType = CommandType.Text
            MyCommande.CommandText = "SELECT EmployeeNumber, FirstName, LastName, Username, Active FROM EmployeesQuery WHERE Active =1 ORDER BY EmployeeNumber ASC"
    		ChargeMesBoutons()
    		Dim MyEmployees As SqlDataReader
            MyEmployees = MyCommande.ExecuteReader()
     
            Do While MyEmployees.Read
            MesBoutons(CType(MyEmployees.Item(0), Integer)).Text = MyEmployees.Item(3)
            Loop
     
            MyEmployees.Close()
            MyCommande.Dispose()
            MyConnection.Close()
    	End Sub
     
        Private Sub ACLoginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
           LoadUsernamesOnButtons()
        End Sub

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Il n'y a pas de raison de déclarer ReadOnly le tableau MesBoutons. Tu devrais montrer le message d'erreur et le code à l'endroit où il se produit car il y a sûrement un problème latent.

    Pour ce qui est de rendre visible ou non un bouton correspondant à un employé tu peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    If MyEmployees.Item(1) = "EMPLOYE" AND MyEmployees.Item(4) = "0" Then   ' 1 et 4, les Items FirstName et Active
     
            MesBoutons(CType(MyEmployees.Item(0), Integer)).Visible = False   ' et  .True quand il faut le rendre visible
     
    End If
    Tu as accès à toutes les propriétés de chaque bouton par MesBoutons(IndiceDuBouton).LaProprieteQueTuVeuxLireOuEcrire.

    J'espère que ça t'aidera ...

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Par défaut J'écoute et j'apprend :)
    Bonjour Rob,
    Encore merci pour ton temps.

    Je ne savais pas où tu voulais que j'essaie ce code, j'ai donc créé un autre sub CheckIfEmployee et fait à peu près le même scénario. J'ai changé le AND pour OR car même si l'item(1) n'est pas EMPLOYEE mais que l'item(4) est à zéro je veux le bouton invisible.

    Voici le code, est-ce à peu de chose près vers quoi tu me dirigeais? Les boutons qui ont comme prénom "Employee" sont vraiment invisible, cette partie fonctionne, par contre dans le sub "CheckIfEmployee", même si Active est à False, les boutons sont là, ce sont les textes qui n'y sont plus.

    J'ai donc essayé de créer un autre sub "CheckIfActive" et je l'ai ajouté au formulaire Load, et ce sont les textes qui n'y sont plus, les boutons y sont toujours.

    Voici l'image:

    Nom : Quasiment parfait.jpg
Affichages : 123
Taille : 116,6 Ko

    Et voici le code:
    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
        Private sub CheckIfEmployee()
                    Dim MyConnection As New SqlConnection
            Dim MyCommande As SqlCommand
     
            MyConnection.ConnectionString = "Server=CLAUDE-PC\AUTOCAISSESQL;database=ACData;User=sa;Pwd=mANONbENOIT1954***;"
            MyConnection.Open()
     
            MyCommande = MyConnection.CreateCommand()
            MyCommande.CommandType = CommandType.Text
            MyCommande.CommandText = "SELECT EmployeeNumber, FirstName, LastName, Username, Active FROM EmployeesQuery WHERE Active =1 ORDER BY EmployeeNumber ASC"
    		ChargeMesBoutons()
    		Dim MyEmployees As SqlDataReader
            MyEmployees = MyCommande.ExecuteReader()
     
            Do While MyEmployees.Read
                If MyEmployees.Item(1) = "Employee" Or MyEmployees.Item(4) = "0" Then
                    MesBoutons(CType(MyEmployees.Item(0), Integer)).Visible = False
                End If
            Loop
     
            MyEmployees.Close()
            MyCommande.Dispose()
            MyConnection.Close()
        End sub
     
            Private sub CheckIfActive()
                    Dim MyConnection As New SqlConnection
            Dim MyCommande As SqlCommand
     
            MyConnection.ConnectionString = "Server=CLAUDE-PC\AUTOCAISSESQL;database=ACData;User=sa;Pwd=mANONbENOIT1954***;"
            MyConnection.Open()
     
            MyCommande = MyConnection.CreateCommand()
            MyCommande.CommandType = CommandType.Text
            MyCommande.CommandText = "SELECT EmployeeNumber, FirstName, LastName, Username, Active FROM EmployeesQuery WHERE Active =1 ORDER BY EmployeeNumber ASC"
    		ChargeMesBoutons()
    		Dim MyEmployees As SqlDataReader
            MyEmployees = MyCommande.ExecuteReader()
     
            Do While MyEmployees.Read
                If MyEmployees.Item(4) = "0" Then
                    MesBoutons(CType(MyEmployees.Item(0), Integer)).Visible = False
                End If
            Loop
     
            MyEmployees.Close()
            MyCommande.Dispose()
            MyConnection.Close()
        End sub
     
        Private Sub ACLoginForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
           LoadUsernamesOnButtons()
            CheckIfEmployee()
            CheckIfActive()
        End Sub

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Je croyais que ce code pouvait se placer dans LoadUsernamesOnButtons(), la où tu places les UserName :

    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
     
    ' ... ... ...
            Do While MyEmployees.Read
     
               If MyEmployees.Item(1) = "EMPLOYE" OR MyEmployees.Item(4) = "0" Then   ' 1 et 4, les Items FirstName et Active
     
                     MesBoutons(CType(MyEmployees.Item(0), Integer)).Visible = False   ' et  .True quand il faut le rendre visible
     
               Else
     
                      MesBoutons(CType(MyEmployees.Item(0), Integer)).Text = MyEmployees.Item(3)
     
               End If
            Loop
    ' ... ... ...
    Le tout serait traiter sur base d'une requête, tandis qu'avec CheckIfEmployee(), tu crée un travail supplémentaire sur la DB (mais c'est pas interdit )

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/11/2012, 15h09
  2. Réponses: 1
    Dernier message: 06/08/2012, 08h24
  3. [C#] pb update avec une TextBox
    Par DodoDAix dans le forum ASP.NET
    Réponses: 9
    Dernier message: 04/09/2006, 11h31
  4. [VB6] Comment faire un update sur des textbox qui sont créés
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 27
    Dernier message: 16/02/2006, 14h52

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