Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2011, 18h52   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 37
Points : 11
Points : 11
Par défaut Augmenter les performances

Bonjour,

Je développe un système avec une application Access comme client et une base de données Postgresql comme serveur. L'application est liée à la base de données par des tables Access liées via un connecteur ODBC. La base de données se trouve sur un serveur VMware accessible par le réseau.

Ca fonctionne très bien, sauf pour la performance dans certains cas. Les tests de performance (CPU, mémoire, réseau) montrent que le serveur est peu chargé donc il faut chercher ailleurs.

La source du formulaire le plus lent contient 70 colonnes dont 20 qui servent presque toutes de liste déroulante dans le formulaire. Les zones de ce formulaire sont réparties sur 9 onglets thématiques.

Quelles sont les possibilités pour augmenter la performance :

1. Remplacer les onglets pas des boutons qui ouvrent chacun un autre formulaire en popup. Cela permettrait de fragmenter la masse de données à ouvrir en une fois. Mais n'y a-t-il pas un problème de locking dans ce cas car le formulaire et la popup utiliseraient la même ligne de la même table ?

2. Faire la même chose en jouant sur l'activation et la désactivation des onglets.

3. Fractionner la table. J'aimerais éviter.

4. Autre solution ???

Toutes les suggestions, toutes les idées, toutes les expériences, tous les conseils sont les bienvenus.
voxov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 19h14   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Si tu as plusieurs onglets, tu peux ne charger les listes déroulantes d'un onglet que lorsque l'onglet devient visible. Ça aide beaucoup.

Autre truc que je viens d'utiliser et qui fait une VRAIE différence (du genre de 52 mn à 5 mn), si tu fais des jointures sur tes tables liées, utilise une requête de type 'SQL Direct' c'est dans le menu 'requête/spécifique SQL'. Cela te permet d'y mettre du SQL natif de ta BD liée ET de faire exécuter ce SQL par ta BD liée pas par ton poste client.

Voir les propriétés de ta requête Access pour y définir la chaîne de connexion et surtout le time-out. Et tu peux aussi avoir un time out sur ton fichier de connexin ODBC, cela dépend des BD.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 06h16   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 605
Points : 30 951
Points : 30 951
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

En complément de ce que t'a dit marot_r , tu peux lire ce tuto qui te donnera d'autres informations intéressantes : Tout ce que vous avez toujours voulu savoir sur l' OPTIMISATION d'APPLICATIONS Microsoft ACCESS.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 13h03   #4
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 37
Points : 11
Points : 11
Un grand merci à vous deux.
Je vais voir tout ce que cela donne dans mon cas et je reviens avec un feed-back.
JL
voxov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 16h20   #5
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 37
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 37
Points : 11
Points : 11
Par défaut feed-back, précision et question

Bonjour,

J'ai fait des essais sur base des indications que marot_r uniquement, jusqu'à présent :

- le SQL direct n'arrange pas mon problème. C'est même plus lent qu'avec un query enregistré. Mais je n'ai pas de jointure dans ce query, donc je ne me trouve pas dans le même cas que celui qui a montré une nette amélioration. Le query remonte une soixantaine de colonnes qui viennent toutes de la même table, pour servir de source à un formulaire. Sauf que parmi ces colonnes, il y en a 15 à 20 qui servent de source de contrôle à une liste déroulante de type Table/requete.

- J'ai remarqué que le plus gros du temps "perdu" était avant le début de l'événement sur ouverture (Form_Open), et au changement de ligne (dans la source du formulaire)

- J'ai besoin de précisions pour essayer de retarder le chargement des listes déroulantes :
+ pour déclencher quand l'onglet devient visible : utiliser l'évmt "sur clic" de la page ?
+ comment bloquer le chargement des listes déroulantes à l'ouverture du formulaire ?
+ comment charger les listes déroulantes quand l'onglet devient visible ?
+ comment ne plus recharger les listes déroulantes si elles sont déjà chargées ?

Merci d'avance.

JL
voxov est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 18h12   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Citation:
Envoyé par voxov Voir le message
Bonjour,

J'ai fait des essais sur base des indications que marot_r uniquement, jusqu'à présent :

- le SQL direct n'arrange pas mon problème. C'est même plus lent qu'avec un query enregistré. Mais je n'ai pas de jointure dans ce query, donc je ne me trouve pas dans le même cas que celui qui a montré une nette amélioration. Le query remonte une soixantaine de colonnes qui viennent toutes de la même table, pour servir de source à un formulaire. Sauf que parmi ces colonnes, il y en a 15 à 20 qui servent de source de contrôle à une liste déroulante de type Table/requete.
Bon, on peut pas gagner à tous les coups :-). C'est le principe de l'optimisation, c'est du cas par cas.

Citation:
+ pour déclencher quand l'onglet devient visible : utiliser l'évmt "sur clic" de la page ?
OnChange de l'objet Onglet.

Citation:
+ comment bloquer le chargement des listes déroulantes à l'ouverture du formulaire ?
Il faut supprimer le contenu de la propriété : source de données

Citation:
+ comment charger les listes déroulantes quand l'onglet devient visible ?
Il faut définir par code la propriété source de données au moment du changement d'onglet. Tu peux récupérer le numéro de l'onglet concrené.

Citation:
+ comment ne plus recharger les listes déroulantes si elles sont déjà chargées ?
Tester si la propriété source de données est déjà renseignée.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h27.


 
 
 
 
Partenaires

Hébergement Web