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

VBA Access Discussion :

Afficher les résultats d'une requête ligne après ligne


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 55
    Points : 39
    Points
    39
    Par défaut Afficher les résultats d'une requête ligne après ligne
    Bonjour, j'ai une requête assez longue en temps d'éxécution, et j'aimerais que m zone de liste se remplisse progressivement plutot que d'un seul coup après un moment d'attente.

    C'est une zone de liste type "liste de valeurs" que je remplie au fur et à mesure que je parcoure le recordset.

    Est-ce faisable ?
    Merci d'avance

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

    Peut-être, peux-tu nous montrer le code qui te permets de remplir ta zone de liste ?

    Starec

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 55
    Points : 39
    Points
    39
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ListeOuvragesDispos.RowSource = Me.ListeOuvragesDispos.RowSource & rst(0) & ";" & rst(1) & ";" & rst(2) & ";" & Round(sngPrice / intNbPrice, 2) & ";"

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Si j'ai bien compris tu as une boucle qui rempli ta RowSource au fur et à mesure.

    Aprés la ligne que tu nous as affiché, essaye en mettant
    pour voir si cela a un effet.

    Starec

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 55
    Points : 39
    Points
    39
    Par défaut
    Impeccable, merci

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 55
    Points : 39
    Points
    39
    Par défaut
    Je ré-ouvre.

    DoEvents permet bien un affichage ligne par ligne (au lieu de tout faire d'un coup) mais pendant le temps de remplissage de la zone de liste, les contrôles (y compris ma zone de liste) restent actifs (on peut cliquer, bidouiller les listes déroulantes) ce qui génère des erreurs.

    Y a t-il un moyen de faire en sorte que le remplissage de la zone de liste se fasse ligne par ligne, tout en empechant ça ?

    Merci d'avance

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Oui, lorsque tu lances ta procédure tu rends tes contrôles inactifs avec Enabled , et lorsque c'est fini tu les rends actifs.

    Starec

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 55
    Points : 39
    Points
    39
    Par défaut
    j'y ai pensé

    mais je ne peux pas "disable" ma zone de liste (car elle est active, c'est l'erreur retournée) or elle a différentes procédures associées (AfterUpdate, DblClick...) qui doivent rester dispo

    Un moyen de m'en sortir ? :p

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re

    Ce qu'il faut faire c'est parcourir la collection de tes contrôles avec un code de ce type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
         Dim oCtrl As Control
        For Each oCtrl In Me.Controls
            If TypeOf oCtrl Is TextBox Then
                oCtrl.Enabled = False
            End If
            If TypeOf oCtrl is CommandButton then
                oCtrl.Enabled = False
            End If
        Next oCtrl
    Ainsi seulement tes Textbox et les boutons seront inactifs, et le même avec True pour les réactiver.
    Attention, avant de lancer ce code, il faut que tu mettes le focus sur ta liste avec SetFocus.


    Starec

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Je viens de penser une chose pour ta liste.

    1 - Créer en public une variable booléenne
    2 - La mettre à true lorsque tu lances la procédure et False à la fin
    3 - Sur chaque évènement de ta liste que tu utilises, tu mets un If pour contrôler la valeur de cette variable, si c'est True, tu fais Exit Sub (cela veut dire que le traitement est en cours), sinon tu lances le code de l'évènement.

    Starec

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

Discussions similaires

  1. [MySQL] Afficher les résultats d'une requête par nombre de caractères
    Par goldenb dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/08/2010, 01h01
  2. Afficher les résultats d'une requête
    Par cinefever dans le forum Langage
    Réponses: 15
    Dernier message: 07/01/2009, 22h14
  3. Réponses: 5
    Dernier message: 15/10/2008, 09h08
  4. Réponses: 6
    Dernier message: 24/06/2007, 01h13
  5. [SQL] Afficher les résultats d'une requête sur plusieurs pages
    Par mealtone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2006, 13h20

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