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 :

Comment ne pas rafraichir automatiquement une zone de liste


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 78
    Points : 45
    Points
    45
    Par défaut Comment ne pas rafraichir automatiquement une zone de liste
    Bonjour a tous,

    j'ai une appli développée sous Access dans laquelle il y a un écran de recherche. Dans la partie haute de cet écran il y a différents champs qui représentent les clauses de la requête de recherche. Dans la partie basse, il y a une zone de liste, il s'agit du résultat de la requête de recherche.
    A l'ouverture (lorsque qu'aucun champ de recherche n'est rempli), l'affichage des données dans cette zone de liste est défini par une requête dont le nom est renseignée dans la propriété "contenu" de cette zone de liste. Hors cette requête peut être assez longue a s’exécuter (notamment lorsque la base est ouverte a l'extérieur du réseau local, via un VPN) et le rafraichissement de cette zone de liste est assez laborieux.
    Mon problème vient du fait que le rafraichissement de cet objet s'effectue un peu trop souvent, par exemple "sur sortie" de cette zone de liste, ou bien au redimensionnement de ce formulaire.
    Quelqu'un connait-il un moyen de désactiver ce rafraichissement automatique ? Je gérerai tout seul comme un grand, avec un .requery .

    Je précise qu'il n'y a pas de requery dans le code.

    merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    Mon problème vient du fait que le rafraichissement de cet objet s'effectue un peu trop souvent, par exemple "sur sortie" de cette zone de liste, ou bien au redimensionnement de ce formulaire.
    bonjour,
    C'est étonnant qu'une zone de liste puisse se rafraichir automatiquement au redimensionnement d'un formulaire ...
    Une solution serait que la propriété Contenu de la zone de liste soit vide à l'ouverture du formulaire et renseignée uniquement lors d'une recherche.
    Peux-tu montrer comment l'alimentation de la zone de liste s'effectue lors de la recherche, c'est à dire, le code de l'évènement de la partie haute (par un bouton je présume) ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 78
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse


    Citation Envoyé par tee_grandbois Voir le message
    C'est étonnant qu'une zone de liste puisse se rafraichir automatiquement au redimensionnement d'un formulaire ...
    Oui c'est très étonnant (d’où mon message ).




    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    Une solution serait que la propriété Contenu de la zone de liste soit vide à l'ouverture du formulaire et renseignée uniquement lors d'une recherche.
    Effectivement, mais les utilisateurs ont besoin d'avoir cet affichage par défaut à l'ouverture du formulaire. Je pourrais ajouter un bouton pour remplir la zone de liste avec les données par défaut, mais je pense qu'ils préfèrent rester sur la solution "lente", c'est à dire avec données par défauts et rafraichissement automatique .



    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    Peux-tu montrer comment l'alimentation de la zone de liste s'effectue lors de la recherche, c'est à dire, le code de l'évènement de la partie haute (par un bouton je présume) ?
    Oui bien sur, en cas de click sur le bouton "recherche", une variable de type string (qui s'appelle strSQL) est remplie avec du SQL selon les champs renseignés, puis ensuite on remplace le contenu de la liste (elle s'appelle "ls_Tout") et on la rafraichis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim strSQL As String
     
    strSQL = "SELECT DISTINCTROW MaTable.MonChamp_1, MaTable.MonChamp_2 "
     
    If Me.strDCI <> "" Then
        strSQL = strSQL & " WHERE (MaTable.MonChamp_1) Like '*" & [Forms]![Pilotage].[strMonChamp_1] & "*'"
    End If
     
    strSQL = strSQL & " ORDER BY MaTable.MonChamp_2 DESC ;"
     
    ls_Tout.RowSource = strSQL
    ls_Tout.Requery

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    bonjour,
    en somme que du code bien classique.
    2 conseils tout de même:
    - le Requery après chargement du RowSource n'est pas utile et peut même être cause de lenteur
    - si en plus il y a un ORDER BY sur un champ non indexé cela peut augmenter le temps de chargement d'autant plus si il y a beaucoup d'enregistrements.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 78
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    - le Requery après chargement du RowSource n'est pas utile et peut même être cause de lenteur
    ok merci du conseil

    Citation Envoyé par tee_grandbois Voir le message
    - si en plus il y a un ORDER BY sur un champ non indexé cela peut augmenter le temps de chargement d'autant plus si il y a beaucoup d'enregistrements.
    Une fois les clauses appliquées il ne reste plus beaucoup de lignes.


    Sinon tu n'as pas d'idée sur ce qui cause mon rafraichissement automatique ?

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 759
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 759
    Points : 14 793
    Points
    14 793
    Par défaut
    Bonjour,
    Sinon tu n'as pas d'idée sur ce qui cause mon rafraichissement automatique ?
    non aucune idée, comme je l'ai dit précédemment, je trouve même cela étrange. Pourrai-tu poster ton formulaire avec les tables (même vides) dans une base compressée ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 78
    Points : 45
    Points
    45
    Par défaut
    En décortiquant un peu plus la requête liée (celle par défaut, à l'ouverture et celle générée lors du click sur le bouton recherche), certains champs du SELECT sont constitués par une fonction dans laquelle on récupère les données d'une autre table. En fait cette façon de faire avait été mise en place pour éviter de multiplier les lignes en cas de lignes multiple dans la table "liée".

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/11/2009, 11h25
  2. Réponses: 12
    Dernier message: 11/07/2008, 10h48
  3. Réponses: 0
    Dernier message: 16/05/2008, 12h06
  4. Réponses: 7
    Dernier message: 03/04/2007, 08h30
  5. Réponses: 3
    Dernier message: 22/03/2006, 09h47

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