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

IHM Discussion :

Remplir dynamiquement une listBox [AC-2010]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 34
    Points : 43
    Points
    43
    Par défaut Remplir dynamiquement une listBox
    Bonjour,
    je débute actuellement sous access et dans l'application que je dois développer, j'aimerai pouvoir remplir dynamiquement une listbox multicolumn.

    D'après un recordset, je remplis une collection et souhaiterai, pour chaque objet de cette collection ajouter un item dans la listbox.
    pour chaque item j'aimerai que les colonnes soit renseignées d'après la valeurs des propriétés de l'objet courrant.

    Je vous envoie le code que j'ai actuellement.
    *lbTasks est ma listbox
    *activityCollection représente ma collection d'activité
    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
     
    With Me.lbTasks
            Me.lbTasks.ColumnWidths = "1;1.5"
            Me.lbTasks.ColumnCount = 11
            Me.lbTasks.AddItem ("headers")
                .Column(0, Me.lbTasks.ListCount - 1) = ""
                lbTasks.List(0, 1) = "test"
                .Column(0, 2) = "Status"
                .Column(0, 3) = "Category"
                .Column(0, 4) = "Budget"
                .Column(0, 5) = "Startdate"
                .Column(0, 6) = "Deadline"
                .Column(0, 7) = "Ticket"
                .Column(0, 8) = "N°SD7"
                .Column(0, 9) = "N°RIE"
                .Column(0, 10) = "Stream owner"
     
            For Each cActivity In activityCollection
                Set cStatus = New Status
                Set cStatus = cStatus.getStatus(cActivity.Status)
     
                Set cPriority = New Priority
                Set cPriority = cPriority.getPriority(cActivity.Priority)
     
                Set cCategory = New Category
                Set cCategory = cCategory.getCategory(cActivity.Category)
     
                Set cStream = New Stream
                Set cStream = cStream.getStream(cActivity.Stream)
     
                MsgBox cActivity.Title, vbOKOnly, "test"
                Me.lbTasks.AddItem ("test" & i)
                    .Column(i, 0) = cActivity.Title
                    .Column(i, 1) = cPriority.Label
                    .Column(i, 2) = cStatus.Label
                    .Column(i, 3) = cCategory.Label
                    .Column(i, 4) = cActivity.Budget
                    .Column(i, 5) = cActivity.StartDate
                    .Column(i, 3) = cActivity.Deadline
                    .Column(i, 7) = Switch(cActivity.TicketFlag = 0, "No", cActivity.TicketFlag = -1, "Yes")
                    .Column(i, 8) = cActivity.SD7
                    .Column(i, 9) = cActivity.RIE
                    .Column(i, 10) = cStream.Label
                    i = i + 1
            Next
        End With
    Toute aide est bonne à prendre, merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    D'après un recordset
    Si tu as un recordset, pourquoi ne pas utiliser la requête SQL qui alimente celui-ci pour ta listbox ?

    Philippe

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 34
    Points : 43
    Points
    43
    Par défaut
    En fait cela doit faire 1jour que je tourne pour trouver une solution.

    Au tout début je peuplais cette listbox d'après un rowsource (la requete SQL).

    Cette requete est paramétré d'après des champs selectionnable sur l'IHM (screen) et est donc réexécutée à chaque modification d'un des critères.
    Seulement avec le rowsource je m'étais apercu de deux choses :
    1)Tout d'abord, lors de selection d'une ligne, impossible de récupérer le bon identifiant au 1er clic (cela me retournait l'identifiant n°1 du rowsource)
    2)Ensuite, si je modifiait plusieurs fois les critères (une dizaine ou 20aine de fois) sans pour autant effectuer une action de clic (pour tester l'id ramené) je perdais tout simplement la source de données.

    Enfin je suis plus un adepte de la POO mais j'ai de bonnes connaissance en BDD langage hôte donc les requêtes ne me pose pas trop de problèmes. si tu penses que j'arriverai mieux à mes fins avec un Rowsource je peux le faire mais j'aimerai dans ce cas fixer les deux problèmes évoqués ci-dessus.

    Code ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Public Sub prepareInterface()
        lbTasks.RowSource = prepareRowSource
    End Sub
    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
     
    'Prepare the request from filters
    Public Function prepareRowSource() As String
        Dim week As Integer
        week = GlobalUtility.Semaine(Date)
     
        prepareRowSource = "Select * from activity a "
        prepareRowSource = prepareRowSource & " where activity_id  in (select activity_id from planification where user_id = " & session & " and week = " & week & ") "
     
        'filters application priority
        '1 = high, 2= middle, 3=low
        Select Case ckbPriorityRetAmount
            Case 0:
                prepareRowSource = prepareRowSource & " and priority_id in (0) "
            Case 1:
                prepareRowSource = prepareRowSource & " and priority_id in (3) "
            Case 2:
                prepareRowSource = prepareRowSource & " and priority_id in (2) "
            Case 3:
                prepareRowSource = prepareRowSource & " and priority_id in (3,2) "
            Case 4:
                prepareRowSource = prepareRowSource & " and priority_id in (1) "
            Case 5:
                prepareRowSource = prepareRowSource & " and priority_id in (1,3) "
            Case 6:
                prepareRowSource = prepareRowSource & " and priority_id in (1,2) "
            Case 7:
                prepareRowSource = prepareRowSource & " and priority_id in (1,2,3) "
        End Select
     
        'Filters application status
        ' 1 = Opened, 2 = Closed, 3 = Assigned, 4=Paused
        Select Case ckbStatusRetAmount
            Case 0:
                prepareRowSource = prepareRowSource & " and Status_id in (0) "
            Case 1:
                prepareRowSource = prepareRowSource & " and Status_id in (4) "
            Case 2:
                prepareRowSource = prepareRowSource & " and Status_id in (3) "
            Case 3:
                prepareRowSource = prepareRowSource & " and Status_id in (4,3) "
            Case 4:
                prepareRowSource = prepareRowSource & " and Status_id in (1) "
            Case 5:
                prepareRowSource = prepareRowSource & " and Status_id in (1,4) "
            Case 6:
                prepareRowSource = prepareRowSource & " and Status_id in (1,3) "
            Case 7:
                prepareRowSource = prepareRowSource & " and Status_id in (1,3,4) "
        End Select
     
        'Filters application category
        If Not IsNull(cbbCategory.Value) Then
            prepareRowSource = prepareRowSource & " and category_id = " & cbbCategory.Value & ""
        End If
    End Function
    ci joint un début de mon interface
    Images attachées Images attachées  

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 34
    Points : 43
    Points
    43
    Par défaut
    Effectivement, après modification du code et bidouillage je reviens sur le 1er problème :
    l’élément que je souhaite récupérer n'est pas le bon élément au tout premier clic sur la lb mais bien le 1er element du recordset (voir screen)

    J'ai essayé de bidouiller pour avoir le bon mais je navigue un peu, si quelqu'un a une idée, je suis preneur

    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
     
    '
    Private Sub lbTasks_Click()
     
        Dim cActivity As Activity
        Set cActivity = New Activity
     
        Dim myRs As DAO.Recordset
        Set myRs = lbTasks.Recordset
     
     
        Set cActivity = cActivity.getActivity(myRs("activity"))
     
        'MsgBox myRs("activity"), vbOKOnly, "test"
     
        MsgBox myRs("activity").Value, vbOKOnly, "test"
    End Sub
    Images attachées Images attachées  

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 34
    Points : 43
    Points
    43
    Par défaut
    Résolu pour le 1er problème et je n'observe plus le 2ème.
    Merci pour l'aide

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

Discussions similaires

  1. [Débutant] Remplire dynamiquement une listbox
    Par Invité dans le forum C#
    Réponses: 2
    Dernier message: 01/02/2013, 17h47
  2. Réponses: 0
    Dernier message: 13/09/2007, 08h33
  3. remplir dynamiquement une liste déroulante
    Par transistor49 dans le forum ASP
    Réponses: 11
    Dernier message: 11/07/2006, 10h53
  4. [C#] Comment remplir dynamiquement une table HTML ?
    Par tiboleo dans le forum ASP.NET
    Réponses: 3
    Dernier message: 31/05/2006, 09h51
  5. Réponses: 5
    Dernier message: 09/08/2005, 17h38

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