Supression ds ACCES - Taille BD inchangée ??

themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 - 11 juin 2003 à 16:07
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 - 12 juin 2003 à 18:14
Bonjour a tous!
:big) :big) :big) :big) :big)

Voila mon probleme est le suivant:
J'ai une base access. J'ai a cote une appli, qui remplie cette base. Jusque la aucun pbl. Mais quand je veux faire des suppressions, ca ne marche pas...
En fait, si, ca supprime bien les enregistrements, on peux le voir en ouvrant la base avec access: c'est vide. MAIS, la taille de la base reste inchangée!! Du coup, la purge est inutile, et je reste avec une base de 20Mo au lieu de 1.6 !! Comment faire pour que la suppression soit vraiment effective? ( c bizarre d'ailleurs que mme en supprimant, la taille change pas...comprds pas :sad) )

J'ai utilisé deux méthode, une avec totoRecordSet.Delete, et l'autre avec une requete "delete from toto where num=1".
Dans les deux cas, ca fait pareil.(a noter que lorsque je fais un refrech ds le k avec la requete, j'ai l'erreur suivante "l'opération demandée par l'appli n'est pas autorisée si l'objet est fermé".

J'espere que qqu'un saura m'aider, car je vois vraiment pas koi faire!! :question)

MERCI BCP!!!!!!!!!!
:big) :big) :big)

6 réponses

cs_Zoltan67 Messages postés 91 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 25 juin 2003 1
11 juin 2003 à 16:19
cherche sur le site comment compacter une base de données, et tu fais ça après tes suppresssions, ta base aura sa taille effective. Je n'ai pas le temps de te donner l'adresse, mais en cherchant tu peux trouver, sinon attends ce soir, j'aurai peut-être plus le temps.
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
11 juin 2003 à 20:37
Je te remercie, je savais pas qu'il fallait faire ce genre de manip!! super microsoft!!
Enfin, sinon, j'avoue ne pas vraiment avoir compris comment utilisé les différentes méthodes. il y en a pas une SUPER simple et légère?

Je trouve que ce que j'ai vu alourdi de beaucoup mon code
Mais c sur, si j'ai pas le choix!!

lol
0
cs_Zoltan67 Messages postés 91 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 25 juin 2003 1
12 juin 2003 à 09:33
voila le source dont je parlais, est-ce celui là que tu as trouvé ? c'est sur ke c lourd, mais bon, tu n'as pas trop le choix je crois

Private Sub compactDB()
    Dim Fichier As FileSystemObject
    Dim BaseCompactée As String
    
    BaseCompactée = pathBaseCompactée 'Chemin de la base compactée ( temporaire )
    Set Fichier = New FileSystemObject
    'Si le fichier de base compactée existe déjà
    If Fichier.FileExists(BaseCompactée) Then
        Fichier.DeleteFile BaseCompactée
    End If
    'Compactage
    DBEngine.CompactDatabase pathBaseACompacter, BaseCompactée
    'Copie et restitution à l'identique
    Fichier.CopyFile BaseCompactée,pathBaseACompacter       
    Fichier.DeleteFile BaseCompactée

End Sub

0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
12 juin 2003 à 10:40
c exactement celui que j'ai trouvé, et que j'ai testé...
C impressionnant, ma base passe de 20Mo a 776Ko!! Ca fait du bien!!!!
Je te remercie!!!

Par contre, j'ai un ptit pbl qui je pense etre tout con. En fait, j'affiche une boite de dial avec un message "veuillez patienter..." et executer la procedure de compactage a ce moment. Mais a chaque fois, j'ai essayer plein de truc, et bien la fenetre ne se dessine pas avt que la procedure ne se fasse. Du coup, la fenetre se lance, on voit just le cadre, le mileiu est pas encore "paint". Tu sais comment je peux assurer d'afficher le contenu de la fenetre AVANT de faire la procedure? (sans bien sur avoir un bouton ;-)!!)

Merci encore!!

Je posterais ce mme message sur une autre question, si tu ne peux pas, et si tu as pas le tps, je comprds, et je te remercie deja bcp de m'avoir aider ainsi!!

a+ et bonne prog!
0

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

Posez votre question
cs_Zoltan67 Messages postés 91 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 25 juin 2003 1
12 juin 2003 à 10:47
peut-etre en mettant un doevents entre le moment ou tu affiche la fenetre et l'appel de la procédure, mais je ne suis pas sur du tout, si ca ne marche pas tu ferais mieux de poster un message, parce ke la je vois pas trop
0
themaste Messages postés 130 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 8 juillet 2008 2
12 juin 2003 à 18:14
et bien en fait, j'ai utilise un timer de 100Ms, comme ca, OnTimer, il fait la fonction. C un peu porc et barbare je trouve, mais c tla seule soluce qui m'est venu lol!!
En tout k, now ca marche, et je t'en remercie encore!!

Bye!
0
Rejoignez-nous