Die Auslesefunktion der ini funktioniert. Das habe ich im Debug-Modus getestet. Leider bleibt das Problem weiter bestehen.
Und du bist dir ganz sicher, daß die Variable
IP in deiner Procedure nach der Zuweisung mit
IP := GetIPfromINI('NAT_IP.ini');
die richtige
IP-Adresse enthält? Hast du dir einen Breakpoint auf diese Zeile gesetzt und durchgesteppt?
Gibt es die ini, wird zuerst angezeigt, 'Connection open.
SQL server does
ot exist or
access denied.' . Erst danach wird versucht, die Verbindung über die
IP aus der ini herzustelllen.
Das bedeutet, es besteht bereits eine Verbindung deiner
DB-Komponente mit der MS-
SQL-Datenbank. Demnach funktioniert nämlich auch dein
DM.AdoConnection1.CLOSE;
nicht deinen Wünschen entsprechend. Auszug aus der Hilfe:
Mit Hilfe von Connected können Sie auch prüfen, ob ein Aufruf der Methode Open (Connected-Wert true) oder Close (Connected-Wert false) erfolgreich verlaufen ist.
In diesem Fall solltest du herauszufinden suchen, wo in deinem Programm bereits eine solche Verbindung
vor dem Einsatz deiner Procedure zustande kommt, vielleicht in DM (Datenmodul) oder in einer anderen
Unit, die auf das Datenmodul Zugriff hat. Versuche auch einmal, alternativ mit
DM.AdoConnection1.Connected := false;
zu schließen.
Weiteren Quellcode in Bezug auf die Connection gibt es nicht.
Kann es auch daran liegen, dass es bei eingebundenen Units ein 'on create' gibt, welches Daten lädt?
Das kannst nur du selbst beantworten, indem du in den eingebundenen Units selbst nachschaust. Aber eigentlich ist das nur schwer vorstellbar, denn die eingebundenen Units "wissen" in der Regel ja nichts von deinen Datenbank-Komponenten, es sei denn, du hast in einer deiner Units eben auch das Datenmodul eingebunden. Wie gesagt, das können wir hier nicht wissen.
Wie sieht es eigentlich mit der Eigenschaft KeepConnection aus?
Mit KeepConnection legen Sie fest, ob eine Anwendung mit einer Datenbank verbunden bleibt, auch wenn aktuell keine zugehörigen Datenmengenkomponenten aktiv sind. Wenn KeepConnection true ist (Voreinstellung), bleibt die Verbindung geöffnet. Bei Verbindungen mit entfernten Datenbankservern oder bei Anwendungen, die häufig Datenmengen öffnen und schließen, sollten Sie KeepConnection auf true setzen. Sie reduzieren auf diese Weise den Datenverkehr im Netzwerk, beschleunigen die Anwendung und umgehen die ständige Neuanmeldung beim Server, die erforderlich ist, wenn die Verbindung wiederhergestellt wird.