Mon module VB fait planter ma base Access...

vincent812 Messages postés 3 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 1 décembre 2005 - 30 nov. 2005 à 18:06
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 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?

Merci d'avance pour vos conseils,

A+

6 réponses

cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
30 nov. 2005 à 18:43
la requête exécutée dans le module. est ce qu'elle marche bien exécutée directement sous access ?

Que se passe -t -il lors du debugage de l'appli ?
Ou est ce que sa bloque ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 nov. 2005 à 19:58
salut,

selon ton traitement, tu peux avoir besoin en ram dispo... la taille de ta base.



92Mo, c'est déjà une belle base, mais Access le gère sans mal. le
problème vient surement d'une boucle, donc rien à ajouter au conseil de
Jack.



++

PCPT [AFCK]
0
vincent812 Messages postés 3 Date d'inscription mercredi 28 septembre 2005 Statut Membre Derniè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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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.

@+

PCPT [AFCK]
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
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
0
Rejoignez-nous