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 :

Lancer une procédure en arrière plan dans access


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Lancer une procédure en arrière plan dans access
    Bonjour,

    J'ai une procédure de mise à jour d'un tableau de bords niveau de stock (nbreuses lignes) qui est appelée au lancement de Access puis périodiquement (mise à jour).

    Cette procédure, assez complexe est longue (plusieurs minutes), lenteur peut-être en partie due à l'interrogation du backend distant (lecture d'enregistrement d'un recordset ligne à lignes).

    Peut-on faire en sorte qu'elle s'exécute en arrière plan sans gêner le reste du fonctionnement de mon appli ?

    En vous remerciant,

    Chetbo

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 747
    Points : 43 891
    Points
    43 891
    Par défaut
    Plutôt que de parcourir ligne par ligne le recordset ( source de la latence ) n'est t'il pas possible de plutôt faire une requête modif ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour chrtophe,

    Que veux-tu dire par requête modif ?
    Est-ce un recordset à une ligne dont on ferait évoluer la requête et donc x ouverture/fermeture de requête (x = nombre de ligne de la requête initiale) ?

    En te remerciant,

    chetbo

  4. #4
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    chrtophe parle plutôt d'une requête Update.

    Le multi-tâche n'est pas prévu dans Access, essayez plutôt d'optimiser vos traitements

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 747
    Points : 43 891
    Points
    43 891
    Par défaut
    Oui, après si tu as besoin d'encore plus de rapidité, tu peux utiliser Sql server avec acces en Frontend et procédures stockées. C'est la logique du truc.

  6. #6
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour le forum.
    Chetbo ,voici un exemple de requete MAJ que j'utilise pour mettre à jour mon planning:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE SimpleDetailPlanning LEFT JOIN planning ON SimpleDetailPlanning.code = planning.code SET planning.reste = planning!reste-SimpleDetailPlanning!quant
    WHERE (((planning.code) Not Like "scotch") AND ((planning.madate)>=[SimpleDetailPlanning]![depart] And (planning.madate)<[SimpleDetailPlanning]![retour])) OR (((planning.code) Not Like "scotchx1") AND ((planning.madate)>=[SimpleDetailPlanning]![depart] And (planning.madate)<[SimpleDetailPlanning]![retour]));
    Pour 8000 enregistrements ,ça prend 6 secondes en local ou environ 10 secondes en réseau .
    En cours d'utilisation ,il ne devrait pas y avoir besoin de (re)mettre à jour ton tableau de bord ,mais seulement l'enregistrement concerné par une modification ou un ajout . Celà fait donc partie de l'optimisation d'une application (comment gagner du temps).
    Cdlt

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour à chacun,

    et merci pour votre aide et votre intérêt

    Peux-tu me donner plus de détails sur ta procédure, je n'arrive pas à bien saisir comment mettre en oeuvre la requête update, dans quel contexte... par rapport à mon besoin. De ce que je comprends, la requête fait une mise à jour d'une table puis le résultat mis à jour sert de base pour ton planning juste ?

    Dans mon cas de figure, Access n'étant pas capable d'afficher en liste continue les mêmes objets avec des propriétés différentes (couleurs, taille) j'ai porter mon tableau de bord sur excel. J'ai donc un "tampon" visuel dynamique composé de plusieurs shape dont les propriétés sont ajustées pour chaque article (taille) cf image.

    Mon traitement vise à lire dans ma table (mise à jour par une requête) les données pour chaque article, faire un calcul, puis un traitement pour connaîtres les nouvelles propriétés des shapes et finalement d'appliquer tout ça sur les shapes de mon doc Excel. Aujourd'hui j'ai une boucle que lit ligne par ligne la table, fait l'ensemble du traitement puis passe à la ligne suivante. J'ai déjà optimisé pour que le traitement ne se fasse que si les données ont changé, mais la comparaison se fait après la lecture ligne à ligne.

    Comment dois-je procéder pour descendre à quelques secondes !

    Merci

    Nom : illustration.jpg
Affichages : 1675
Taille : 54,0 Ko

  8. #8
    Membre éclairé
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonsoir chetbo
    Une table "planning" constituée d'un champ "code" (matériel), un champ "madate" et un champ "reste" qui correspond au stock .
    Pour une référence "code" ,j'ai 365 lignes (je travaille sur un an glissant).
    Donc pour chaque "code" de chaque "réservation" dans "SimpleDetailPlanning " (c'est une requête), dans la table "planning" on sélectionne le champ "code" correspondant ,dont le champ "madate" est entre "depart" et "retour" de "SimpleDetailPlanning " et on met à jour le champ "reste" en lui soustrayant le champ "quant".

    Pour ton cas ,je n'ai pas la version 2010 et je n'ai pas bien compris .Est-ce que les couleurs représentent des niveaux mini ?
    Dans une requête ,on peut mettre plusieurs fois le même champs à condition de le nommé différemment (alias)
    Cdlt

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour Thierry, Bonjour Forum

    Je suis sur une version 2002 (ou 2003) de Access et Excel - et win 2000

    En fait je travaille mon stock sur le principe de la DDMRP (demand driven Material Requirement Program cf Google).

    Ce n'est pas un stock mini maxi. La barre coloré représente plusieurs niveau d'action à faire en fonction du niveau du stock : vert : rien à faire; jaune lancer cde avec qté suffisante pour arriver à top of green (et tenant compte du mini de cde); rouge clair, suivre la (les) cde(s) et "booster" les arrivées (risque de rupture), rouge foncé tout mettre œuvre pour obtenir les cdes (risque très important de rupture). Dans la barre un curseur (noir au milieu, bleu en top of green, rge flash en rupture) indique le niveau de stock.

    La barre est dynamiquement modifée par plusieurs paramètres dont certain calculés journellement : utilisation journalière moyenne (periode x jours), variabilité de la conso article, consistance du délai de livraison, durée de livraison... ceci pour chaque article.

    Par des requêtes, updates... j'obtiens (assez rapidement) mes données de base pour permettre la mise à jour de l'affichage de la barre, et l'affichage de données d'intérêt pour les achats (recommandation d'achat, stock, conso moyenne...).

    Ma difficulté (lenteur) se situe au moment ou je lis (puis traite) ces infos pour mettre à jours la barre, curseur... construit à partir de "shapes" ou zone de texte dans excel car je lis ligne par ligne ma requête.

    J'espère que ces quelques infos te permette de mieux comprendre mon problème.

    Peut-être qu'un copyfromrecordset sur range dans Excel puis traitement en lisant la feuille Excel fera l'affaire.

    En vous remerciant pour l'aide,

    Bien cordialement

  10. #10
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par chetbo Voir le message
    Bonjour à chacun,

    et merci pour votre aide et votre intérêt

    Peux-tu me donner plus de détails sur ta procédure, je n'arrive pas à bien saisir comment mettre en oeuvre la requête update, dans quel contexte... par rapport à mon besoin. De ce que je comprends, la requête fait une mise à jour d'une table puis le résultat mis à jour sert de base pour ton planning juste ?

    Dans mon cas de figure, Access n'étant pas capable d'afficher en liste continue les mêmes objets avec des propriétés différentes (couleurs, taille) j'ai porter mon tableau de bord sur excel. J'ai donc un "tampon" visuel dynamique composé de plusieurs shape dont les propriétés sont ajustées pour chaque article (taille) cf image.

    Mon traitement vise à lire dans ma table (mise à jour par une requête) les données pour chaque article, faire un calcul, puis un traitement pour connaîtres les nouvelles propriétés des shapes et finalement d'appliquer tout ça sur les shapes de mon doc Excel. Aujourd'hui j'ai une boucle que lit ligne par ligne la table, fait l'ensemble du traitement puis passe à la ligne suivante. J'ai déjà optimisé pour que le traitement ne se fasse que si les données ont changé, mais la comparaison se fait après la lecture ligne à ligne.

    Comment dois-je procéder pour descendre à quelques secondes !

    Merci

    Nom : illustration.jpg
Affichages : 1675
Taille : 54,0 Ko
    Bonjour chetbo,

    Je veux développer un DDMRP dans Visual Basic .NET et SQL Server. Je comprends la systématique dernière DDMRP, mais la converter dans un logiciel est plutôt different. Pourriez-vous me donner des trucs et astuces importants s.v.p.? Ou bien l'application qui vous avez développé dans MS Access seulement avec des données d’essai?

    P.S.: Ce logiciel dans VB & SQL Server est seulement pour améliorer la gestion de mon inventaire.

    Merci d'avance!

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    As-tu pensé à importer toutes tes données en une seule fois dans une feuille de ton classeur puis te servir de cette feuille comme source ?

    A+

  12. #12
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    L’idée est de télécharger les données transactionnelles dans une table sur le serveur SQL. Ensuite, la logique de calcul DDMRP (application .NET) fera les propositions et les recommandations.

    Sls,
    Steven

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pouvez-vous m'aider sur ce sujet ?

    Merci.
    Dernière modification par Invité ; 19/03/2020 à 19h04.

Discussions similaires

  1. Exécuter une tâche en "arrière plan" dans un container web
    Par Tyler_Durden dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/08/2011, 15h06
  2. [AC-2007] lancer une requete avec 2 parametres dans Access 2007 avec VBA
    Par dimis dans le forum VBA Access
    Réponses: 8
    Dernier message: 29/07/2009, 14h45
  3. [WD10] Executer une procédure en arrière plan
    Par orditosh dans le forum WinDev
    Réponses: 2
    Dernier message: 10/07/2008, 12h16
  4. comment lancer une fenètre en arrièr plan
    Par moon93 dans le forum wxPython
    Réponses: 2
    Dernier message: 16/07/2007, 09h25

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