vincent812
Messages postés3Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 1 décembre 2005
-
30 nov. 2005 à 18:06
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 2010
-
1 déc. 2005 à 13:27
Bonjour à tous,
Je suis assez perplexe devant mon nouveau problème...
Le contexte: J'utilise un Module en VB pour mannipuler et mettre en forme les données dans une table.
Au départ, je me suis placé dans une nouvelle Base, avec uniquement les tables, et autres objets necessaires pour l'execution de ce module. C'est une Base qui ne me sert qu'à faire mes "tests".
J'ai codé mon module dans cette Base Test, et tout marche très bien, avec un temps d'éxécution assez faible.
Content de ce test, j'ai fait une copie de ce module, de ma table à remanier, et de tous les autres éléments nécessaires, dans ma Base de travail, en pensant que puisque ça marchait dans la Base de test, ça devait marcher dans l'autre Base. Ben non!
Le problème: Quand j'éxécute le code, au départ tout semble se passer normalement: Il n'y a aucun message d'erreure. Ce programme se déroulait en 30s dans ma Base de test, mais dans celle-ci, toujours rien au bout de 10min. Du coup je clique sur la fenêtre, et en haut de celle-ci, il s'affiche le message "Not Responding" et je suis obligé d'arrêter l'application et sortir, car tout a complètement planté.
Remarque: A priori la seule différence entre ces deux bases c'est leur taille.
Ma base test ne contient que les objet sur lesquels je bidouille quelque chose, tandis que ma base de travail a actuellement une taille de 92Mo.
Je ne sais pas si c'est gros ou non pour une Base, mais en tout cas je me demande si du fait d'une taille trop importante, ma Base de travail peut ne plus avoir la capacité de traiter l'éxécution de mon module? Ou alors ça n'a rien à voir, et je mélange tout...?
Bref: Je voudrais savoir si vous avez une explication au fait que mon module fasse planter ma base de travail, mais pas la base de test?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 30 nov. 2005 à 18:53
Salut
Si les manips sont importantes et ta base est grosse : Peut-être besoin de beaucoup de temps et de ressouce mémoire.
Si tu as des boucles d'itérations dans ton module, ajoute un/des DoEvents à l'intérieur afin que le phénomène "ne répond pas" disparaisse (au cas où).
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
vincent812
Messages postés3Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 1 décembre 2005 1 déc. 2005 à 12:32
Salut à tous, et merci pour vos réponses:
vpoyo,
En fait la fenêtre de débogage n'apparaît à aucun moment. C'est juste que plus rien ne répond à part le gestionnaire des tâches et je suis obligé de tout arrêter comme ça...
En déroulant mon module bout par bout je me suis aperçu que le programme plantait à l'intérieure d'une boucle "while not recordset.EOF if ..."
Je vais suivre la piste de jack et pcpt, et voir l'effet de quelques "DoEvents" insérés dans le programme...
N'empêche, si le problème vient de ma boucle, c'est quand même bizarre que l'éxécution se fasse sans souci dans mon autre base de test, mais fasse planter ma base de travail, non? C'est le même module, et la même boucle dans les deux bases. Et comme le dit pcpt, Access peut gérer une base de 92 Mo sans pb ....
Merci, et A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 déc. 2005 à 12:42
salut,
c'est le même module. si il fonctionne pour l'une, c'est que ta
procédure est sensée être correcte aussi pour l'autre (j'entend par là
que tu sors bien de ta boucle).
tu as donc juste à placer ton DoEvents une fois dans cette boucle, voire dans d'autres ayant le même fonctionnement.
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 20106 1 déc. 2005 à 13:27
la seule différence entre tes deux bases sembles être le volume de données alors.
Regarde également pour "optimiser" ta requête, ne renvoie pas de colonne dont tu n'as pas besoin, d'enregistrement dont tu n'as pas besoin. Il faut peut être rajouter quelques index afin d'accélérer les recherches