Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi BDE hängt! (https://www.delphipraxis.net/82015-bde-haengt.html)

Bernhard Geyer 8. Dez 2006 14:20

Re: BDE hängt!
 
Ergänz mal eine gesonderte Close-Funktion in deiner DLL. Hatte auch mal den Probleme wenn die DB-Verbindung erst beim finalization der Units bzw. beim Destruktor der Units geschlossen wurde. Hier wars aber da in meinem Fall die Screen-Instanz nicht mehr vorhanden war.

smaug 8. Dez 2006 15:02

Re: BDE hängt!
 
Die TTable hab ich natürlich geschlossen. (Wenn sie offen bleibt macht's aber auch keinen Unterschied.)
Oder meinst du eine andere Close-Funktion?

Bernhard Geyer 8. Dez 2006 17:21

Re: BDE hängt!
 
Zitat:

Zitat von smaug
Die TTable hab ich natürlich geschlossen. (Wenn sie offen bleibt macht's aber auch keinen Unterschied.)
Oder meinst du eine andere Close-Funktion?

Auch TDatabase geschlossen?

smaug 11. Dez 2006 08:19

Re: BDE hängt!
 
TDatabase verwende ich gar nicht.
Hab's aber mal ausprobiert und eine Instanz erzeugt, macht (ja genau) keinen Unterschied.

Aber nochmal die Frage nach den LCK-Dateine im DB-Verzeichnis. Ist das normal, dass hier auch PARADOX.LCK und PARADOX.LCK liegen, zusätzlich zu denen im PrivateDir?

Bernhard Geyer 11. Dez 2006 08:32

Re: BDE hängt!
 
Zitat:

Zitat von smaug
TDatabase verwende ich gar nicht.
Hab's aber mal ausprobiert und eine Instanz erzeugt, macht (ja genau) keinen Unterschied.

Auch alle TTable-Instanzen darauf umgestellt und dann rechzeitig TDatabase-Verbindung geschlossen.

hoika 11. Dez 2006 09:23

Re: BDE hängt!
 
Hallo,

ich würde das DB-Verzeichnis mal auf einen anderen Rechner legen,
und in der Systemsteuerung(Computerverwaltung, Freigaben)
mir die geöffneten Dateien ansehen.

Lokal geht es auch über SysInternals (Processviewer)


Heiko

smaug 11. Dez 2006 09:56

Re: BDE hängt!
 
Wie kann ich TTable auf TDatabase umstellen? Die gleichnamige Eigenschaft ist doch readonly.
Und was heisst rechtzeitig?

hoika 11. Dez 2006 10:01

Re: BDE hängt!
 
Hallo

TDataBase.Directory auf dein Verzeichnis setzen oder AliasName auf den BDE-Alias
und bei allen TTable DataBaseName auf TDataBase.DataBaseName

Ich denke aber, bei Paradox-Tabellen nützt das nicht viel,
die Tabellen werden bei einem TDataBase.Connected=False (Close, oder was immer)
nicht geschlossen.
Es käme auf einen Test an.

Das kannst du aber auch über mein obiges Posting machen.


Heiko

smaug 12. Dez 2006 15:07

Re: BDE hängt!
 
TDatabase war über DatabaseName bereits richtig verknüpft und auch geschlossen.

Die LCK-Dateien kommen mir aber immer noch komisch vor.

(Wenn das Problem überhaupt hier liegt.)
In OnShow des Hautpfensters, das selber keine BDE-Komponenten hat, setze ich Session.PrivateDir. PDOXUSRS.LCK wird auch sofort dort angelegt. Soweit OK. Ausserdem wird dort TDatabase instanziiert.

Delphi-Quellcode:
Session.NetFileDir := path+'NET';
Session.PrivateDir := ExtractFilePath(ParamStr(0))+'CLIENT';

globalDatabase := TDatabase.Create(nil);
with globalDatabase do begin
  databaseName := 'MyDB';
  DriverName  := 'STANDARD';
  globalDatabase.Params.Add('PATH='+path);
  connected := true;
end;
Erst bei Bedarf werden Formulare kreiert.
Delphi-Quellcode:
object MyTab: TTable
   DatabaseName = 'MyDB'
   TableName = 'DATA.DB'
   object DataField1: TStringField
      FieldName = 'Field1'
      Size = 6
   end
end
In OnShow eines anderen Formulars wird dann eine TTable geöffnet. Jetzt erscheint auch eine PDOXUSRS.LCK im DB-Verzeichnis.

Soll das so sein??

hoika 12. Dez 2006 16:59

Re: BDE hängt!
 
Ja,

damit Paradox feststellen kann, ob eine Tabelle exclusiv geöffnet werden kann,
wird auch das blosse Öffnen einer Tabelle protokolliert (in ebend jeder LCK-Datei).


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr.
Seite 2 von 2     12   

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