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 :

Compteur d'enregistrements instantané sur formulaire


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Compteur d'enregistrements instantané sur formulaire
    Bonjour,

    Dans une gestion commerciale que nous avons développée, nous cherchons à faire apparaitre à l'aide de compteurs sur le formulaire d'acceuil le nombre de commandes en en attente / en cours de preparation et traitées.

    Nous utilisons 3 requetes et la fonction Dcount, et cela marche, mais le temps de calcul est tres lent et cela nuit à l'utilisation de l'application.
    Si quelqu'un a une suggestion pour faire quelque chose de plus élégant et surtout de plus efficace nous le remercions par avance .

    Pour le moment nous utilisons sur les évenements du formulaire :
    - sur activation

    et le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Current()
    labCpteAtraiter.Caption = DCount("[N°mvt]", "[req001CommandesNonExportees]")
     
    labCpteExpCiel.Caption = DCount("[N°mvt]", "[req001CommandesNonFacturees]")
     
    labCpteDactuAttente.Caption = DCount("[N°mvt]", "[req001CommandesNonTerminees]", "[Facture CIEL]=True")
     
    End Sub
    Par avance merci.

    Charles

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 31
    Points : 30
    Points
    30
    Par défaut un décompte avec recordset peut-être?
    Je ne suis pas expert mais je crois effectivement savoir que les fonctions de domaine ont la réputation d'être peu véloces.

    Je vois 2 chemins qui peuvent être explorer:
    - si les décompte que tu souhaites faire porte sur des requêtes qui sont déjà utilisées dans le formulaire, tu peux peut-être tenter de dupliquer/cloner le recordset utilisé, et filtrer / te ballader dedans (en ayant gardé la position initiale qqpart pour pouvoir replacer le recordset sur sa position initiale à la fin du traitement de calcul);
    - si les décomptes portent sur des requêtes qui ne sont pas utilisées dans le formulaire, tenter de mettre à jour les données directement par un code VB - cf. exemple ci-dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function maj_labCpteAtraiter as Integer
    Dim str_sql as String
    Dim db as DAO.Database
    Dim rst as DAO.Recordset
    str_sql = "SELECT DISTINCT [N°mvt] FROM [req001CommandesNonExportees]"
    Set db = Application.CurrentDb
    set rst = db.OpenRecordset(str_sql)
    rst.Movelast
    maj_labCpteAtraiter = rst.RecordCount
    rst.Close
    Set rst = Nothing
    Set db = Nothing
    End Function
    Puis mettre le code suivant dans le formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
    labCpteAtraiter.Caption = maj_labCpteAtraiter
    End Sub
    Je ne sais pas si la chose est très élégante (perso, je ne trouve pas ) mais c'est la seule solution que j'ai trouvée pour certains de mes formulaires et c'est plutôt efficace. En espérant que cela te soit d'une qqconque aide!

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup Olive_tp.
    Dans la pratique ta solution ne donne pas des performances différentes de l'utilisation de la fonction dcount. C'est toujours très lent des qu'il y a plus de 25 enregistrements. Du coup c'est vrai que ce n'est pas vraiment très elegant car ca rajoute plusieurs lignes de codes.

    Si quelqu'un sait, je le remercie d'avance.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 611
    Points : 34 287
    Points
    34 287
    Par défaut
    salut,
    peut-être qu'une approche du type:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * INTO tbltemp From tarequete
    suivi d'un
    serait plus rapide ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. [AC-2010] Appliqué filtre instantané sur formulaire.
    Par Rifton007 dans le forum IHM
    Réponses: 9
    Dernier message: 09/03/2013, 07h39
  2. Réponses: 2
    Dernier message: 14/02/2006, 15h31
  3. Positionnement sur un enregistrement dans un formulaire
    Par bestall666 dans le forum Access
    Réponses: 5
    Dernier message: 04/02/2006, 17h10
  4. Réponses: 19
    Dernier message: 26/01/2006, 08h44
  5. Réponses: 2
    Dernier message: 04/01/2006, 21h33

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