begin process at 2010 02 10 01:00:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Base de données

 > 

Access

 > 

Compact Database en cours d'utilisation


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Compact Database en cours d'utilisation

dimanche 26 novembre 2006 à 23:46:06 | Compact Database en cours d'utilisation

mtaallah

Salut,
   J'essaye de compacter une base de données Access...
   Mon application contient plusieurs formes dont chacune se connecte à  ma base en utilisant ADOTable ou ADOQuery dont aucune liaison n'est activé au départ.
   J'utilise la fonction suivante:
 
Function CompactAndRepair(DB: string) : boolean;  //je l'ai trouvé dans une recherche
var
    v: OLEvariant;
begin
  Result := True;
  try
    v := CreateOLEObject('JRO.JetEngine');
    try
      v.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DB,
                        'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DB +
                        'x;Jet OLEDB:Engine type=5');
      DeleteFile(DB);
      RenameFile(DB + 'x', DB)
    finally
      v := Unassigned
    end; { try }

  except
    Result := False
  end; { try }
end;

et on ajoute la procédure suivante:
procedure TFormIndex.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   CompactAndRepair(GetCurrentDir+'\Data\Database.mdb');
end;


  Le problème c'est qu'à la fermeture de mon application après avoir effectué quelques modification ou en ouvrant tout simplement les autres Formes (lors de la compilation avec Delphi, et même juste en activant la liason ADOTable ou ADOQuery sans introduire aucune modification) on me dit que la base de données est en cours d'utilisation par l'utilisateur... et la machine ... (un long message) et qu'il est impossible de la compacter...

  Alors que je suis sûr que toutes les liaisons ont été désactivées en fermant chaque Form (à l'évènement OnHide de chaque Form --> ADOTablex.Active:= False;)

  En exécutant l'application directement, il n'affiche aucun message, mais il ne modifie rien dans la base de données (le compactage n'est pas effectué).

Comment faire...

dimanche 26 novembre 2006 à 23:55:51 | Re : Compact Database en cours d'utilisation

mtaallah

Désolé!
Le sujet est un peu long, j'essaye d'être un peu précis... Mais ce que je voudrai le savoir en fin de l'histoire c'est:
   - Peut on avoir une solution pour libérer notre base de donnée de toute connection ADO (soit disons un ADOTable ou un ADOQuery).
ou bien
   - Existe-t-il une autre procédure à appliquer à la forme autre que

procedure TForm2.FormHide(Sender: TObject; var Action: TCloseAction);
begin
     ADOTable1.Active:= False;
end;

 
   pour y être sûr qu'il n'existe aucun processus en iaison avec ma base de données...

Merci



Cette discussion est classée dans : base, end, db, try, database


Répondre à ce message

Sujets en rapport avec ce message

Avec quelle DataBase ? [ par Fredelphi ] Bonjour,Je dois faire un catalogue sur cd-rom, et j'aurais voulu mettre mes données dans une database.Est-ce possible ? Et si oui, avec quelle base ? Base de donnée ne nécessitant pas d'installation [ par loursonwinny ] Bonjour, est-il possible d'attaquer une db, sous delphi, sans installation d'un db engine. La db étant locale et devant être éditée par différentes in midas applyupdate [ par shakeoff1 ] bonjour,voila je n'arrive pas a intercepter les erreur d'exécution (style clé primaire dupliquée...) d'un applyupdate .j'ai essayer se code : enregistrer un TFilestream apres un transfert [ par ewertheimer ] voici mon code: var texte : string; Line, FileName : String; i, FileSize : integer; Fs : TFileStream; begin with AThread.Connection do try plantage application base de donnée !! [ par ericdu62x ] j'ai realisé un petit programme a titre perso pour tester les bases de données access et celui ci a fonctionné impecable jusqu'a tout a l'heure....... L' avenir des .db [ par Joleroy ] Bonsoir,Nous somme en 2005, je fait mes soft en delphi Win32 et...J' utilise encore des tables créé avec le vieux module base de données...Je veux don TDatabase, connexion a base access dynamique [ par usmok ] je voudrais pouvroir associer mon TDatabase à un bdd Access à l'exécution,le tout sans utiliser de lien ODBCles valeurs de mon database sont initialis fichier db sans db ? [ par barbulille ] voila, j'ai besoin de créer une base de données mais mon application fonctionnera sous linux & windows donc je voudrais créer cette base de données sa KYLIX3 et initialization [ par barbulille ] encore moi! et oui bon j'ai créée une fiche & surchargé la méthode AfterConstruction afin qu'elle appelle une fonction située dans un autre module(mod Creation de base foxpro [ par SuperNini ] Salut a tousJe souhaite créer des bases foxpro a la volée avec Delphi 5 et le composant standard TTable.Si je crée des bases paradox à la volée, je n'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales