Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datamodule richtig Frei geben (https://www.delphipraxis.net/97664-datamodule-richtig-frei-geben.html)

marabu 14. Aug 2007 14:51

Re: Datamodule richtig Frei geben
 
Hallo René,

auch wenn du nur mit einem Datenmodul arbeiten würdest: Eine gewisse Wartezeit beim Beenden eines ADO-Client ist normal. Da mehrere Zugriffsschichten abgräumt werden kann sich unter ungünstigen Umständen (mehrere Clients, viele offene Cursor, viele geänderte Puffer, ...) einiges an Zeit aufsummieren. Eventuell kannst du diese Zeit durch Verbesserungen am Datenmodell und der Implementierung verringern, aber ganz weg geht das nie. Minimal ist der Zeitraum, wenn du nur einen Client startest und sofort wieder beendest. Woran das bei dir genau liegt, könntest du eventuell mit einem SQL-Monitor herausfinden.

Freundliche Grüße

renekr 14. Aug 2007 14:58

Re: Datamodule richtig Frei geben
 
Hi marabu,
danke.

Wie macht ihr das eigentlich mit den Connections?
Ich habe pro Datenmodul 1-2 Connections ,das ist noch von anfang an und i weiß das das nciht optimal ist sogar eher das gegenteil bewirkt.

I muss halt auf veschiedene Databases mit unterschiedlichen usern Connecten aber nur 1 Server.

danke

Hansa 14. Aug 2007 18:50

Re: Datamodule richtig Frei geben
 
Zitat:

Zitat von renekr
Hi,
leider verwechsle i das nicht *GG*

Wirklich ganz sicher ? :mrgreen:

Zitat:

Zitat von renekr
..Wie macht ihr das eigentlich mit den Connections?..

Was gibts denn da zu tun ? Bei mehreren DBs an verschiedenen Orten ist lediglich der genaue Pfad zur DB zur Laufzeit zu setzen. Das schreibe ich in eine Ini-Datei. Zu Testzwecken kann man die mal schnell mit Editor ändern und hat prompt andere Daten, ohne Rumgefummele. So ungefähr :
Delphi-Quellcode:
  DataBase.Close;
  DataBase.DatabaseName := DatenBankName; // aus Ini oder von Hand setzen
  DataBase.Open;
  Transaction.Active := true;
Das gehört ins DatamoduleOnCreate des allgemeinen DMs. Die Datamodules werden dann von der IDE so in die DPR eingefügt :

Delphi-Quellcode:
  Application.CreateForm(TDM1, EingDM);
  Application.CreateForm(TDM2, JMod);
  Application.CreateForm(TDM3, ShopDM);
  Application.CreateForm(TSpDM, SpMod);
  Application.CreateForm(TfrmMenue, frmMenue); // MainForm
Sie werden also NICHT dynamisch erzeugt. Irgendwelche Fehler sind bei dieser Vorgehensweise noch nie aufgetaucht. Die Forms außer der MainForm werden allerdings ALLE dynamisch erzeugt, um das OnCreate der Forms sinnvoll benutzen zu können. Die DMs extra von Hand zu erzeugen ist IMHO Unfug. Könnte allerdings eventuell die EXE tatsächlich um 383,2353 Byte verkleinern und 0,00003522 Sek. beim Programmstart einsparen. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 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