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

Runtime Discussion :

Modifier la source de donnée d'une listBox au runtime ?


Sujet :

Runtime

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut Modifier la source de donnée d'une listBox au runtime ?
    Bonjour,

    Voilà mon souci aujourd'hui.

    J'ai une zone de liste en Access 2003 que j'ai paramétré et je récupére le contenu d'une requête que j'ai stoqué par ailleur.

    Cette zone de liste contient 3 colonnes (la première est affectée à la value de ma zone de liste et les deux suivantes sont affectées à deux textBox.

    Plus concrêtement pour vous présenter mon cas je sélectionne un numéro de zone géographine dans ma zone de liste déroulante (et je vois en même temps la ville et la région qui lui correspondent) et quand je fais ma sélection, une textBox reçoit la nom de la ville et l'autre le nom de la région.
    Jusque là tout va bien.

    Sauf que certains utilisateurs ont accés dans cet écran seulement à une région (la leur)... Là dessus je récupère bien le nom de la région au momment du login dans la table qui va bien. Je veux donc dans certains cas que la requète que j'ai passé en paramètre à ma zone de liste en tant que source de donnée soit remplécé dans mon programme par une nouvelle requête qui aura pour paramètre le nom de la région. Ors apparemment la requète ne s'exécute pas et je ne récupère pas dans ma zone de liste le résultat de la requête.

    Voilà toute ma question. J'espère avoir été clair. Si quelqu'un peut m'aider ? Je suis un peut désespéré en fait.

    Marco.

  2. #2
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr,

    exécuté un Requery sur la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    me.MaListe.Requery

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut
    Bonjour,

    Oui merci Arkham46. Je fais bien ça...

    En fait le code de ma fonction est le suivant :

    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
    Public Function FctRechercheDroitsFicheIncident( _ 
        ByVal StrDroits As String, _ 
        ByVal StrRegion As String, _ 
        ByVal StrStatut As String, _ 
        ByVal StrUser As String) As Boolean 
     
    Dim SQL             As String 
    Dim SQLRegion       As String 
    Dim db              As DAO.Database 
    Dim rs              As DAO.Recordset 
    Dim LngIndex        As Long 
     
        On Error GoTo ErrHandler 
     
        FctRechercheDroitsFicheIncident = False 
     
        SQL = "SELECT Incident.NumIncident, Incident.Typologie, Incident.NumSite, Incident.DatIncident, Incident.NomRedacteur, Incident.TypIncident, Incident.MatIncident, Incident.EquipIncident, Incident.DatAnalyseNational, Incident.ResponsableAnalyse, Incident.OuvertLe, Incident.ClosLe, Incident.ClosPar, Incident.CompteRendu, Incident.MesuresSecurisationIntermédiaires, Incident.DateAnalyse, Incident.ResultatAnalyse, Incident.ChefDeProjetRegional, Incident.ChefDeProjetNational, Incident.Statut" & _ 
            " FROM ((Region INNER JOIN Ville ON Region.NomRegion = Ville.Region) INNER JOIN (Site INNER JOIN Incident ON Site.Site = Incident.NumSite) ON Ville.Ville = Site.Ville) INNER JOIN Login ON Region.NomRegion = Login.Region" '& _ 
            " WHERE Incident.NumIncident='" & Form_FrmListeDesIncidents.LstResultQuery.ItemsSelected(0) 
     
      
        If StrDroits <> CstAdmin Then 
            If StrRegion = "NAT" Then 
            'Si le code région est : "National" 
                SQL = SQL & " WHERE (((Incident.Statut)='" & "Public" & "'))" 
    '            SQL = SQL & " AND (((Incident.Statut)='" & "Public" & "'))" 
            Else 
            'Sinon : c'est une des 6 régions 
                SQL = SQL & " WHERE (((Incident.Statut)='" & "Public" & "')) OR (((Region.NomRegion)='" & StrRegion & "'))" 
    '            SQL = SQL & " AND (((Incident.Statut)='" & "Public" & "')) OR (((Region.NomRegion)='" & StrRegion & "'))" 
     
                SQLRegion = "SELECT Site.Site, Ville.Ville, Region.NomRegion" & _ 
                    " FROM (Region INNER JOIN Ville ON Region.NomRegion = Ville.Region) INNER JOIN Site ON Ville.Ville = Site.Ville" & _ 
                    " WHERE (((Region.NomRegion)='" & StrRegion & "'));" 
            End If 
        Else 
         
        End If 
         
        SQL = SQL & " ;" 
         
        Set db = DBEngine.Workspaces(0).Databases(0) 
     
        Set rs = db.OpenRecordset(SQL, DB_OPEN_DYNASET) 
     
    '===>    La partie qui m'intéresse est ici... 
     
        If Not rs.NoMatch Then 
            Form_FrmFormulaireIncident.RecordSource = SQL 
             
    '        If Trim(SQLRegion) <> "" Then 
             
                Form_FrmFormulaireIncident.NumSite.RowSourceType = "Table/Query" 
                Form_FrmFormulaireIncident.NumSite.RowSource = ReqLocalisationRegion 'SQLRegion 
    '            Set rs = Nothing 
                                           
    '            Set rs = db.OpenRecordset(SQLRegion, DB_OPEN_DYNASET) 
    '            Set Form_FrmFormulaireIncident.NumSite.Recordset = rs 
                Form_FrmFormulaireIncident.Requery 
    '        End If 
             
        Else 
            Err.Description = "Aucun incident ne correspond aux critères sélectionnés" 
            Err.Raise 1 
        End If 
     
        FctRechercheDroitsFicheIncident = True 
         
    ExitHandler: 
        Set rs = Nothing 
        Set db = Nothing 
        Exit Function 
     
    ErrHandler: 
    Resume 
        MsgBox Err.Description, vbExclamation, CstAppName 
        FctRechercheDroitsFicheIncident = False 
        Resume ExitHandler 
             
    End Function
    Et la requète intitulée : ReqLocalisationRegion contient le code SQL suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Site.Site, Ville.Ville, Region.NomRegion 
    FROM (Region INNER JOIN Ville ON Region.NomRegion = Ville.Region) INNER JOIN Site ON Ville.Ville = Site.Ville 
    WHERE (((Region.NomRegion)=[Formulaires]![Form_FrmFormulaireIncident]![TxtRegionParam].[Value]));
    TxtRegionParam est un champs invisible que j'alimente au momment du chargement de mon formulaire avec une variable déclarée en public au niveau de mon formulaire.

    Merci en tous les cas si tu peux m'aider, car je commence sèrieusement à en perdre mon latin.

    Marco.

  4. #4
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Je n'ai pas vu le requery sur la zone de liste

    Quant à ceci :

    Set Form_FrmFormulaireIncident.NumSite.Recordset = rs

    Pourquoi ne pas lui affecter la source SQL du recordset plutot que le recordset en lui même que tu détruis à la fin du code EDIT : Oups j'avais pas vu que c'était en commentaire

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut
    Oui pardon,

    Les commentaires n'aident peut être pas à la relecture de mon source, mais par contre, je l'ai laissé de manière à montré que j'ai essayé les deux solutions et que ni l'une ni l'autre ne marchent.

    Pour ce qui est de lapremière partie de mon code, c'est aussi pour monter que ça marche au moins un fois et ensuite plus moyen.

    Merci si tu peux m'aider en tous les cas.

    Marco un peut désespéré.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 166
    Par défaut
    Citation Envoyé par Tofalu
    Je n'ai pas vu le requery sur la zone de liste
    +1.
    Il y a bien Form_FrmFormulaireIncident.Requery... mais la liste dont tu parles est-elle Dépendante du formulaire? Sinon, il faut explicitement lui envoyer un Me.MaListe.Requery.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Par défaut
    Bonsoir Caroline (ou bonjour car je ne sais pas à quelle heure tu trouveras ce messge depuis Québec),

    En tous les cas merci de ta réponse.

    En fait cette zone de liste n'est pas dirctement dépendante du formulaire... Par contre la valeur de sa propriété value sera par la suite enregistrée dans la "table principale" du formulaire.

    Mais le contenu de la liste doit être dépendante des droits de l'utilisateur. En effet à quoi servirait il que l'utilisateur voit des endroits qui ne sont pas dans sa région ? En fait c'est un élément que je n'avais pas vu au départ et que je rajoute maintenant pour améliorer mon interface.

    J'essayerais de voir ce dont tu me parles demain. Mais je ne suis pas sur que celà améliore les choses en fait.

    Par contre, je pense à autre chose... La source de donnée estdéclarée dand les propriétés de mon formulaire (en dur dans l'interface) : est ce que lorsque je fais un requery de mon formuilaire ça n'écrase pas le résultat de ce que j'essaye d'affecter à ce contrôle dynamiquement par le code ? J'ai remarqué qu'il y avait un un requery sur le formulaire juste après l'appele à la procédure que j'ai inséré dans mon précédent message juste avant de partir.

    Qu'en dites vous ? Je ne sais pas si je suis bien clair là ?

    A bientôt et merci à tous les deux et à ceux qui voudront bien m'aider.

    Marco.

Discussions similaires

  1. [CR XI] modifier la source de données d'une procédure stockée vers une commande
    Par battl14 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 18/05/2011, 14h28
  2. modifier la source de donnée d'une dataset
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/01/2010, 08h47
  3. Réponses: 16
    Dernier message: 20/03/2006, 23h21
  4. source de données d'une listbox?
    Par gdkenny dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/03/2006, 17h11
  5. source de donnée d'une LOV
    Par oradevelop dans le forum Oracle
    Réponses: 2
    Dernier message: 28/04/2005, 13h36

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