Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO Connection und TRY FINALLY Problem (https://www.delphipraxis.net/16244-ado-connection-und-try-finally-problem.html)

hitzi 13. Feb 2004 14:59


ADO Connection und TRY FINALLY Problem
 
Hallo,

wenn man folgenden Code unter WINXP (mit WINXP Pro getestet)verwendet

Delphi-Quellcode:
  try
    adoconnection1.Open();
  finally
    adoconnection1.Close;
  end;
funktioniert alles tadellos. Lass das Programm geöffnet und warte mal etwas über ein Minute 65-70sec und lass den Code nochmal ausführen. Nun kommt beim Befehl adoconnection1.open eine Exception mit der Meldung schwerwiegender Fehler.
Auf einem Win2000 Rechner tritt dieses Verhalten nicht auf.
Entfernt man den TRY FINALLY Block funktioniert es auch unter WINXP tadellos. Auch wenn man keine 60 Sekunden wartet (den Code z.B. alle 30sec ausführen) tritt der Fehler nicht auf.

Hatt jemand einen Verdacht woran das liegen könnte?

MfG Hitzi

PS: Die ADO Connection wird für eine Verbindung zu einem Informixserver verwendet.

sakura 13. Feb 2004 15:02

Re: ADO Connection und TRY FINALLY Problem
 
Typisches Fehlkonstrukt...

Delphi-Quellcode:
  adoconnection1.Open();
  try
    ....
  finally
    adoconnection1.Close;
  end;
...:cat:...

hitzi 16. Feb 2004 07:36

Re: ADO Connection und TRY FINALLY Problem
 
Hallo Sakura,

da hast du Recht :stupid:
Da hab ich doch glatt in meinem Testprogramm einen neuen Fehler eingebaut.
Ursache war das ich den Fehler aus dem eigentlichen Programm reproduzieren wollte.

Der eigentliche Code mit dem Fehler lautet so:

Delphi-Quellcode:
PrioForm := TPrioform.Create(Application);
try
  Prioform.ShowModal;
finally
  FreeAndNil(Prioform);
end;
Code aus dem OnCreate der PrioForm, welcher den Fehler verursacht:
Delphi-Quellcode:
procedure TPrioForm.FormCreate(Sender: TObject);
begin
  if not Mainform.DBConnection.Connected then Mainform.DBConnection.Open();
....
Das "Mainform.DBConnection.Open()" verursacht den Fehler. Irgendwie bin ich dann auf den falschen Weg gekommen und hab die im ersten Post gezeigte Routine in einem Testprogramm überprüft und bin eben auf den gleichen Fehler gekommen.(?)

Der Fehler besteht immer noch.
Start des Hauptprogrammes:
1. Weg: innerhalb von einer Minute den Button betätigt, welcher die "PrioForm" erstellt -> alles funktioniert wunderbar.
2. Weg: nach einer Minute den Button betätigt -> Fehler
Öffne ich jedoch vor dem Erstellen der Form die DBConnection und schließe sie wieder, funktioniert das ganze auch nach einer Minute.

Der genaue Fehlertext lautet: Im Project "..." ist eine Exception der Klasse EOleException aufgetreten. Meldung 'Schwerwiegender Fehler'. Prozess wurde angehalten ...
Der Fehler liegt bei der Funktion aus der ADODB (Zeile: 1577)

Delphi-Quellcode:
procedure TADOConnection.DoConnect;
begin
  ConnectionObject.Open(ConnectionObject.ConnectionString, FUserID, FPassword,
    ConnectOptionValues[FConnectOptions]);
  if FDefaultDatabase <> '' then
    ConnectionObject.DefaultDatabase := FDefaultDatabase;
end;
Genauer gesagt bei "ConnectionObject.Open".

Kennt jemand die Ursache?

MfG Hitzi

hitzi 16. Feb 2004 10:43

Re: ADO Connection und TRY FINALLY Problem
 
Neues Thema zu dem gleichen Problem, da sich der Sachverhalt geändert hat -> http://www.delphipraxis.com/topic18558,0,asc,0.html

MfG Hitzi


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