none
Crash Access en compactage base RRS feed

  • Discussion générale

  • Je développe actuellement sous Access 2007 une IHM liée à diverses bases, dont une qui grossit très vite.
    J'ai donc prévu un compactage automatique, codé en VBA.
    L'application fonctionne parfaitement en Access 2007 sur un poste fixe chez mon client.
    Par contre, lorsque je tente de la faire tourner sur mon PC portable (également en Access 2007), Access crashe lors du compactage
    A noter que j'ai eu, initialement, un problème lié semble t'il à l'absence de la dll fpdtc.dll dans les références de la base. J'ai chargé la DLL manquante, l'ai placée dans le répertoire Office 12, et je n'ai plus le message
    Par contre, je ne peux utiliser ma base correctement sur mon portable

    Ci-dessous le code utilisé pour compacter la base:


    Public Function fCompactBase(strBase As String)
        '   Compacte une base externe
        Dim srcDstName As String
        srcDstName = strBase & ".tmp"
        DBEngine.CompactDatabase strBase, srcDstName
        Kill strBase
        Name srcDstName As strBase
    End Function

    Ce que j'ai remarqué, c'est qu'en fait, j'utilise 2 fois cette fonction dans le cours du déroulement de mon code.
    La première fois, si la base liée est de faible taille... ça passe
    Par contre, la seconde fois (dans lce cas, la base fait environ 1,5GO)... ça plante

    Remarque: je viens de désinstaller puis réinstaller complètement Access sur mon poste.... sans changement

    Quelqu'un aurait il une idée?

    • Type modifié Ciprian Duduiala mercredi 18 avril 2012 13:47 attente de feedback
    mercredi 11 avril 2012 13:33

Toutes les réponses

  • Bonjour aussi,

    Une IHM c'est un concept qui évolue dans le temps.  Pour ce qui est d'Access :

    • Formulaires avec différents contrôles
    • Barres d'outils ou rubans
    • Menus contextuels
    • ...

    Une base de 1,5 Go, c'est pas mal quand on sait que la limite pour Access est de 2 Go...

    Quelle RAM (performances) pour votre portable par rapport au fixe de votre client ?

    Maintenant, le compactage, c'est bon pour une base en construction ou où il y a des suppressions / ajouts en masse. J'ai aussi lu un MVP le déconseiller !
    Vous parlez de deux appels de compactage dans un déroulement de code.  J'ose espérer que ce n'est pas pour la même base !
    Une fois par jour / semaine ne suffirait pas ? 

    Vous en avez fait une fonction.  Pourquoi ne pas y mettre un traitement d'erreur et retourner err.number ?
    Sinon, autant en faire une procédure !

    Quitte à recevoir une volée de bois vert, pourriez-vous envisager de réduire la taille de la "grosse" base ?

    • fractionner la base, mais on a un problème d'intégrité référentielle;
    • voir ce qui est trop gros et optimiser si c'est possible;
    • passer en SQL SERVER
    • ...

    Cdt (aussi)

    Blaise

    vendredi 13 avril 2012 14:42