Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler bei Neuerstellen von Paradox-Datenbank zur Laufzeit (https://www.delphipraxis.net/1988-fehler-bei-neuerstellen-von-paradox-datenbank-zur-laufzeit.html)

hacki 2. Jan 2003 08:01


Fehler bei Neuerstellen von Paradox-Datenbank zur Laufzeit
 
Hallo,

hab da ein Problem in meiner Anwendung, die es Administratoren erlaubt, über ein spezielles Menü zur Laufzeit einzelne Datenbank-Dateien (Paradox-Datenbank) neu zu erstellen. Dazu deaktiviere ich zuvor eine Table-Komponente, die Zugriff auf die Datenbank hat, erstelle (per Update über SQL-Query-Komponente) die Datei neu und aktiviere die Table Komponente wieder.

Code:
  if( MainForm.DBUebungenExist ) then // existiert die Datei ?
  begin
   SaveActiveValue1 := MainForm.MasterTable.Active;
   MainForm.MasterTable.Active := False;          // deaktiviere Table

   FortschrittLabel.Caption := 'Lösche Uebungen.db';
   MainForm.DropTable( 'Uebungen.db' );  // Lösche per DROP TABLE
  end;

  DBProgressBar.Stepit;
  FortschrittLabel.Caption := 'Erstelle Uebungen.db';
  MainForm.CreateUebungenDB;          // Erstelle neu mit CREATE TABLE

  if( MainForm.DBUebungenExist ) then
  begin
   MainForm.MasterTable.Active := SaveActiveValue1; // aktiviere Table
  end;
Leider bekomme ich immer eine Exception, da anscheinend noch andere Table Komponenten die Uebungen.db im Gebrauch haben. Außerdem werden beim Deaktivieren der Table Komponente Routinen im Programm angesprungen, deren Ausführung ich mir zu dieser Zeit nicht erklären kann !???

Wie bekomme ich heraus, welche Komponente die Uebungen.db noch geöffnet halten ?

Kann mir jemand einen Tip geben ?

Danke und Gruß
Hacki

MrSpock 2. Jan 2003 14:43

Hallo hacki,

poste doch bitte einmal die CreateUebungenDB Methode.

Ist denn sichergestellt, dass MasterTable tatsächlich auf die Tabelle zeigt, die mit CreateUebungenDB erstellt werden soll?

Wenn dem so ist, sollte mit dem Schließen sichergestellt sein, dass in diesem Prozess niemand mehr auf die Tabelle zugreift (sofern du keine 2. Instanz benutzt). Sonst könnte noch die Delphi IDE auf die Tabelle zugreifen, falls du Active bereits in der IDE auf True gesetzt hast.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz