|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Michaël Développeur .NET Inscription : avril 2008 Messages : 80 ![]() |
Bonjour,
J'ai une base de données dont les tables sont externes. J'ai un formulaire qui importe des données à partir d'un fichier texte séquentiel. A la fin de l'import, la taille de ma base de données augmente d'un bon gros Mo et ceci uniquement si l'import s'est bien passé et que je valide la transaction... donc: si Dao.CommitTrans: la taille de la base de données augmente si je le remplace (au meme endroit en ne touchant à rien d'autre) par Dao.RollBack: la taille de la base de données ne bouge pas Pourtant les tables sont externes, dans une autre base access. Je ferme bien le TextStream du fichier, les Recordset et la base de données (si ce n'était pas le cas, la taille augmenterait aussi avec le RollBack, j'imagine) Quelqu'un aurait il une idée d'où ça pourrait provenir? |
|
|
00
|
|
|
#2 |
![]() ![]() |
salut,
petite lectures sur les transactions : http://access.developpez.com/faq/?pa...al#Transaction http://warin.developpez.com/access/d...tie_3#L3.1.3.1 http://hcesbronlavau.developpez.com/Transactions/ ca devrait aider a trouver la reponse
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
11
|
|
|
#3 |
|
Membre régulier
![]() Michaël Développeur .NET Inscription : avril 2008 Messages : 80 ![]() |
Moué... sauf que les sites que tu proposes expliquent comment faire une transaction ... Or, je sais utiliser les transactions, le problème n'est pas là...
je vais essayer d'être plus clair... J'ai une base ne contenant que des formulaires travaillant sur les tables d'une base ne contenant que des données (la base de formulaire contient juste les tables externes liées). le problème est que quand je valide ma transaction (avec CommitTrans) donc effectivement la base de données contenant les données est mise à jour, c'est bien ce que je souhaite. Mais la taille de la base de formulaires exécutant la mise à jour augmente alors qu'elle ne contient pas les données vu que les tables sont externes... en plus, elle augmente beaucoup plus que la base contenant les données. Je signalais que si je remplace le CommitTrans par Rollback (au même endroit dans le code), je n'avais pas cette augmentation de volume de ma base (qui ne contient pas de données), ce qui voudrait dire que je nettoie bien mes objets (fermeture et mise à null des objet recordset, database et textstream) et que le problème viendrait de la transaction proprement dite. |
|
|
00
|
|
|
#4 |
![]() ![]() |
Je ne comprends pas le probleme.
Tu Commit ta requete -> tu valides les mises a jour/suppressions/ajouts. Comme les donnees sont mises a jour, Access reactualise ces donnees. Lorsque tu vas taper dans une table, notamment si elle est liee, il faut bien stocker les informations quelque part. Ici, ce quelque part est ta base appelante. Il est toujours possible de compacter la base a chaque fermeture
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#5 | |
|
Membre régulier
![]() Michaël Développeur .NET Inscription : avril 2008 Messages : 80 ![]() |
Mais non, vu que les tables sont liées, la base de formulaire ne devrait pas augmenter, seule la base de donnée contenant effectivement les tables devrait augmenter non?
Les tables liées ne sont que des liens vers les données, ma base de formulaire ne contient pas les tables proprement dites... donc seule la base de données contenant effectivement les données devrait augmenter or dans ce cas ci la base de données contenant les données augmente (c'est bien) MAIS la table de formulaires augmente aussi et vachement plus. bon... j'ai un fichier Client.mdb contenant des formulaires j'ai un fichier data.mdb contenant des tables Client.mdb a des liens vers les tables de data.mdb Lorsque je mets à jour les données (situées dans data.mdb) par code à partir de Client.mdb, la taille de Client.mdb augmente... Or, seul data.mdb devrait augmenter, vu que c'est lui qui contient les données... non? Tu voudrais dire que les liens d'une base à l'autre copie l'intégralité des données d'une base? donc ici ma taille de Client.mdb serait la taille de data.mdb + la taille effective de Client.mdb? Citation:
|
|
|
|
00
|
|
|
#6 | |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 459 ![]() |
Citation:
Il est donc recommandé de faire un compact régulièrement. Pour Access 97 tu peux prgrammer le scheduleur de Windows pour lancer le compactage par exemple tous les soir à minuit en passant par une ligne de commande DOS. 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. |
|
|
|
20
|
|
|
#7 |
|
Membre régulier
![]() Michaël Développeur .NET Inscription : avril 2008 Messages : 80 ![]() |
arf... c'est bien ce dont j'avais peur... tant pis.
Un tout grand merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com