Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 06/01/2011, 16h29   #1
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
Par défaut Taille du fichier augmente

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?
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 16h46   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
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
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 07/01/2011, 09h19   #3
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
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.
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 10h43   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
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
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 11h37   #5
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
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:
Il est toujours possible de compacter la base a chaque fermeture
Non, pas en 97, ce n'est possible que depuis Access 2000
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 20h35   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 459
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 459
Points : 7 535
Points : 7 535
Citation:
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?
Non lors d'un traitement, il y a création d'objets temporaires dans la base frontale qui servent à faire certains traitements, des jointures par exemples. Access est reconnu pour avoir des bases qui 'gonflent' lorsquon s'en sert. J'ai une base qui double partiquement de volume lors d'un de mes traitement alors que mon volume de données réelles n'augmente que très peu.

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.
marot_r est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/01/2011, 20h09   #7
Membre régulier
 
Homme Michaël
Développeur .NET
Inscription : avril 2008
Messages : 80
Détails du profil
Informations personnelles :
Nom : Homme Michaël
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : avril 2008
Messages : 80
Points : 84
Points : 84
arf... c'est bien ce dont j'avais peur... tant pis.

Un tout grand merci
mkl238 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h17.


 
 
 
 
Partenaires

Hébergement Web