Forum - Questions générale - Sujet n°371

[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Questions générale - Questions générale


clos par  le // : :  Sujet n° 371  Fractionnement

le 30/05/2010 : 13:59
par Kolele

Anonyme

visiteur

Salut à tous,
je commence à vouloir partager mes applications et je viens de découvrir le fractionnement des bases (avec les tables sur un partage réseau et les autres objets sur la Base de chacun des utilisateurs). Problème : ça ralentit un max, alors que la base initiale ne faisait que 12 Mo (la base principale en fait maintenant 11,8 et les bases utilisateurs 1,2 Mo) et que le test ne comporte que deux utilisateurs !
Enregistrer les données prend 55 secondes contre 3 auparavant !k
le compactage n'a rien arrangé. Je potasse les index, truc dont je ne me suis jamais servi jusque là.
L'équipe du père 3Stone aurait-elle une piste ?!
Ecrire à Kolele  sujet clos  Haut

[]   

DébutPrécédent [ 1 2 ] SuivantFin
Réponse n° 9
--------
le 04/06/2010 : 02:31
par 3Stone

Anonyme

Administrateur

Bonjour,

 
Citation :

Je n'ai pas l'ouvre-boite du fichier que tu m'indiques de télécharger sur le site Access web

 
Ouvre un simple module (ALT + F11) et puis par le menu Fichier, Exporter un fichier... tu remarqueras que l'on te propose "nom_du_module.bas" wink
C'est donc une méthode très pratique pour exporter (et importer) du code VBA.
Dans ton cas, il suffit de choisir "Importer un fichier..."
Ceci dit, ce fichier est simplement du texte... que tu peux ouvrir avec un quelconque éditeur.

Remarque, lorsque tu fais la même manoeuvre dans le module "sous" un formulaire, tu remarqueras que l'on te propose "nom_du_formulaire.cls".
"cls" pour module de classe. Voir ici.

Pour ce qui est de la littérature... je n'en connais pas qui traite particulièrement le sujet. Mais le principe, qu'il ne faut jamais perdre de vue, est qu'il faut toujours minimiser le volume des données manipulées, et donc, qui transitent par le réseau.
De la réflexion, des tests et... de la pratique... permet d'éviter le pire.

Selon le type de base et la qualité de la réalisation, une base Access peut être utilisée par 3 à une vingtaine d'utilisateurs simultanés.
Au delà, il faut utiliser SQL Server ou autre, qui est client-serveur.

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
Réponse n° 10
--------
le 06/06/2010 : 10:06
par Kolele

Anonyme

visiteur
Bonjour 3Stone,
Ok, Altéfonz et le fichier basLookup.bas est bien dans le module. Ensuite j'ai essayé de tester dans une requête qui fonctionnait avec DLookup, en SQL, la nouvelle fonction tLookup avec la même syntaxe (champs, domaine, critère). J'ai repris le même critère que DLookup pour être sûr, mais ça ne marche toujours pô !y ça donne :
 
SELECT [0 - BASE ELEVE 2009/10].NomPrénomElève, [1 - AVIS d'IMPOSITION].[Revenu imposable 1], [1 - AVIS d'IMPOSITION].[Parts fiscales 1], CLng([Revenu imposable 1]/[Parts fiscales 1]) AS [Quotient familial], DLookUp("[Montant annuel]","1 - ADDP : taux et barêmes",[Quotient familial] & " between [Valeur plancher]  AND  [Valeur plafond]") AS montant, tLookup("[Montant annuel]","[1 - ADDP : taux et barêmes]",[Quotient familial] & " between [Valeur plancher]  AND  [Valeur plafond]") AS essai FROM [0 - BASE ELEVE 2009/10] INNER JOIN [1 - AVIS d'IMPOSITION] ON [0 - BASE ELEVE 2009/10].[Clé Elève] = [1 - AVIS d'IMPOSITION].[Clé Elève];  

J'ai dépoussiéré mes manuels de VBA une nouvelle fois, mais c'est la 3ème tentative et je tombe au bout d'une semaine à la page 240, sans avoir rien capitalisé vraiment. Bien à toi,
  clos par  le // : :  Haut
Réponse n° 11
--------
le 07/06/2010 : 19:16
par 3Stone

Anonyme

Administrateur

Bonjour,

Je vois encore ceci :
 
Code :
DLookUp("[Montant annuel]","1 - ADDP : taux et barêmes",[Quotient familial] & " between
 
sans crochets autour du nom de la table...

Ceci dit, remplacer simplement une série de DLookup() par des tLookup() ne fera pas des miracles.
J'avais plutôt donné le lien pour illustrer le fait que les fonctions de domaines peuvent être très lourdes et lentes dans les requêtes.

Cela s'explique facilement:
Les fonctions DLookup(), Dmax(), DMin(), etc. sont très pratique, mais, comme tu peux le voir dans les fonctions de remplacement, une telle fonction de domaine doit, pour chaque ligne, ouvrir un recordset, passer la table en revue si le champ n'est pas indexé, récupérer la valeur qui va bien et pour finir, fermer le recordset.
Et j'ai bien dit, pour chaque ligne...

Selon la construction, c'est toute la base qui doit transiter par le réseau !

Pour ce qui concerne les performances, il est également important de tenter d'éliminer un maximum de réponses par le premier critère... et de terminer par celui qui à le moins de poids.

Cordialement,
Pierre(3stone)
  clos par  le // : :  Haut
DébutPrécédent [ 1 2 ] SuivantFin
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut