begin process at 2012 02 10 14:26:24
  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 inserer à une base de donnée db à partir d'un fichier texte [ par sekiousabrina ] je travaille avec Delphi 5 et 7 , veuillez m'aider pour inserer à ma base de donnée db à partir d'un fichier texte. merci d'anavce. 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 Gestion des erreurs - Try except [ par jderf ] Bonjour, Dans l'initialisation de mon appli, je me connecte à une base. En cas d'erreur, je souhaite afficher le message d'erreur remonté par le rai DataBase et Index [ par sharifcrd ] sharif j'ai une DB DBASE je travail sous delphi7 j'ai bien creer ma database avec mon programme et j'ai crees l'index primere 'ID' avec DataType := f


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,967 sec (3)

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