IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Compacter access 2007


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 41
    Par défaut Compacter access 2007
    Bonjour,

    J'utilisais à aujourd'hui access 2003 et j'utilisais la procedure pour compacter :
    http://delphi.developpez.com/faq/?pa...acterbddaccess

    Je n'ai aucun probleme pour utiliser une base access 2007 avec le Provider=Microsoft.ACE.OLEDB.12.0

    La question est la suivante : comment fait-on pour compacter avec access 2007 sans JRO étant donné qu'il est fourni avec delphi 2009

    Merci

  2. #2
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Ta question n'est pas claire (du moins pour moi..)

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Citation Envoyé par yannba Voir le message
    Bonjour,

    J'utilisais à aujourd'hui access 2003 et j'utilisais la procedure pour compacter :
    http://delphi.developpez.com/faq/?pa...acterbddaccess

    Je n'ai aucun probleme pour utiliser une base access 2007 avec le Provider=Microsoft.ACE.OLEDB.12.0

    La question est la suivante : comment fait-on pour compacter avec access 2007 sans JRO étant donné qu'il est fourni avec delphi 2009

    Merci
    Mise à part le fait que sur le poste en question ton moteur Access 2007 doit être présent regarde çà :

    social.msdn.microsoft.com


  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 41
    Par défaut
    Merci pour votre reponse, je regarde ca ce soir.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 41
    Par défaut
    Désolé pour le retard,

    Je viens de migrer vers delphi 2009.
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    function CompactAccessDB(DB, MdP:string):Boolean;
    var v:OLEvariant;
    begin
        Result:=False;
        try
          v:=CreateOLEObject('JRO.JetEngine');
          try
            if CopyFile(PChar(DB),PChar(DB+'.bak'),False) then // Sauvegarde de la base d'origine
              begin
                  V.CompactDatabase('Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+DB+';Jet OLEDB:Database Password='+MdP,
                                    'Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+DB+'comp'+';Jet OLEDB:Database Password='+MdP); // Compactage de la base d'origine
                  DeleteFile(DB); // Suppression de la base d'origine
                  RenameFile(DB+'comp',DB); // Mise en place de la base compactée
                  showmessage('Compactage réussi');
                  Result:=True;
              end;
          finally
            V:=Unassigned;
            showmessage('Pas de base de données');
          end;
        except
          showmessage('Compactage non réussi');
          Result:=False;
        end;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        CompactAccessDB(ExtractFilepath(application.ExeName)+'Base.accdb', '');
    end;
    J'ai un message d'erreur "argument non valide" lorsque le programme arrive sur :
    'Provider=Microsoft.ACE.OLEDB.12.0;Data Source='+DB+'comp'+';Jet OLEDB:Database Password='+MdP); // Compactage de la base d'origine

Discussions similaires

  1. [Access 2007 - Nouveauté] Champ Pièces-Jointes
    Par Arkham46 dans le forum Sondages et Débats
    Réponses: 14
    Dernier message: 22/06/2011, 20h30
  2. Compacter une base access 2007 en VBA
    Par theuma dans le forum Access
    Réponses: 9
    Dernier message: 16/06/2011, 08h23
  3. [AC-2007] Compacter BDD Access 2007
    Par brutus437 dans le forum IHM
    Réponses: 3
    Dernier message: 17/06/2010, 15h41
  4. [Access 2007 - Nouveauté] Collecter des données via Outlook
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 15
    Dernier message: 04/06/2007, 13h31
  5. access 2007 multivalue?
    Par hocine dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 00h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo