AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

connection zum Server

Ein Thema von claudine99 · begonnen am 11. Mär 2013 · letzter Beitrag vom 19. Mär 2013
Antwort Antwort
Seite 3 von 4     123 4      
Perlsau
(Gast)

n/a Beiträge
 
#21

AW: connection zum Server

  Alt 13. Mär 2013, 16:07
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.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#22

AW: connection zum Server

  Alt 13. Mär 2013, 16:14
Wie wäre es denn die "default"-adresse auf einen Phantasiewert zu setzen, und die "richtige" Adresse aus der INI zu laden? Dann müßte sich das Fehlverhalten beim Kunden nachstellen lassen.

Was das Debuggen angeht, bei solch hartnäckigen Fällen hilft oftmals geduldiges Betätigen von F7.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
claudine99

Registriert seit: 9. Mär 2012
20 Beiträge
 
Delphi 2009 Professional
 
#23

AW: connection zum Server

  Alt 13. Mär 2013, 16:22
TADOConnection.Connected:= false;-> hab ich
KeepConection := false;-> hab ich

ich habe einen Haltepunkt an das Ende der Funktion 'ini auslesen' gesetzt und mich dann durchgehangelt: ADOConnection.ConnectionString stimmt - wenn ini vorhanden, dann IP aus ini, sonst die 12.345.678.910....

es gibt einige Units, die ein 'on create' haben, unter 'uses' das Datenmodul steht und ein 'select' zum Laden von CheckListboxen ausführen-> Fehlerquelle?
  Mit Zitat antworten Zitat
claudine99

Registriert seit: 9. Mär 2012
20 Beiträge
 
Delphi 2009 Professional
 
#24

AW: connection zum Server

  Alt 13. Mär 2013, 16:28
@p80286

hab ich gemacht. Funktioniert bei mir. Kann aber auch daran liegen, dass ich ja auf die 12.345.678.910 darf, aber der externe Partner nicht.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#25

AW: connection zum Server

  Alt 13. Mär 2013, 16:31
TADOConnection.Connected:= false;-> hab ich
KeepConection := false;-> hab ich
Das ist aber schon seltsam: In dem Moment, wo du die Verbindung herstellen möchtest, besteht also keine aktuelle Verbindung, und dennoch erscheint die Meldung, daß eine Verbindung bestünde? Das kann ich nicht nachvollziehen ...

ich habe einen Haltepunkt an das Ende der Funktion 'ini auslesen' gesetzt und mich dann durchgehangelt: ADOConnection.ConnectionString stimmt - wenn ini vorhanden, dann IP aus ini, sonst die 12.345.678.910....
Auch einen Haltepunkt in deiner Connect-Procedure? Überprüfe doch bitte auch dort einmal den Inhalt der Variablen IP.

es gibt einige Units, die ein 'on create' haben, unter 'uses' das Datenmodul steht und ein 'select' zum Laden von CheckListboxen ausführen-> Fehlerquelle?
Okay, das wären dann mögliche Quellen für Verbindungen vor dem Ausführen deiner Connect-Procedure. Vielleicht hilft es, wenn du in diesen Units an den entsprechenden Stellen ein Connected := false bzw. ein Close einfügst ...

Ich habe mir angewöhnt, alle Verbindungen, die ich aufbaue, zentral von einer Stelle aus zu machen, und zwar im OnShow des Hauptformulars, wo z.B. erst einmal die Existenz einer eventuell notwendigen Ini-Datei überprüft und selbige ausgelesen wird, danach die Verbindung zur Datenbank hergestellt wird und danach erst alle Einstellungen, die in der Datenbank gespeichert sind (z.B. auch mal das Befüllen und Einstellen von Checklistboxen) vorgenommen werden.
  Mit Zitat antworten Zitat
claudine99

Registriert seit: 9. Mär 2012
20 Beiträge
 
Delphi 2009 Professional
 
#26

AW: connection zum Server

  Alt 13. Mär 2013, 16:41
@ Frank,
Danke, da werd ich mir mal die Units vornehmen.

Der Inhalt der variablen IP stimmt jedenfalls.

Claudia
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#27

AW: connection zum Server

  Alt 13. Mär 2013, 16:50
Also so wirst du da nicht weiterkommen ... und wir noch viel weniger ...

Ich würde mal vorschlagen du baust dir in das OnBeforeConnect Event der Connections einen StackTrace-Log ein, damit du erfährst, wer denn da die Verbindung auslöst (und ob es überhaupt die sind).

Im Anhang findest du die Units für das Loggen (Quelle http://synopse.info).

Einfach im Projekt-Verzeichnis auspacken und dann wie folgt dein Projekt bearbeiten:

In der DPR-Datei
Delphi-Quellcode:
uses
  SynCommons, // Unit hinzufügen
  ...;

begin
  // Alle Logs in die Datei schreiben
  with TSynLog.Family do
  begin
    Level := LOG_VERBOSE;
  end;

  ...
end.
Überall wo du jetzt den StackTrace benötigst fügst du einfach (SynCommons bei uses nicht vergessen) folgendes ein:
Delphi-Quellcode:
uses
  SynCommons,
  ...;

  // StackTrace in Log-Datei
  TSynLog.Add.Log( sllStackTrace );
Wichtig ist es jetzt beim Compilieren die MAP-Datei erzeugen zu lassen (Projekt/Optionen/Delphi-Compiler/Linken/Map-Datei = Detailiert) um auch die Namen im StackTrace zu sehen.

Für die Auslieferung wird nur noch die MAB-Datei benötigt (ist eine sehr stark komprimierte MAP-Datei und wird automatisch beim ersten Start der Anwendung selber erstellt).

Die Log-Dateien werden default im Anwendungs-Verzeichnis geschrieben.
Angehängte Dateien
Dateityp: zip SynLog.zip (243,1 KB, 13x aufgerufen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
claudine99

Registriert seit: 9. Mär 2012
20 Beiträge
 
Delphi 2009 Professional
 
#28

AW: connection zum Server

  Alt 13. Mär 2013, 17:42
Danke Dir Sir Rufo, probiere ich aus. Ich halte Euch auf dem Laufendem
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#29

AW: connection zum Server

  Alt 14. Mär 2013, 08:55
Das mit dem Stack-trace... geht das nicht einfacher? Im Before-Connect einen Breakpoint setzen und dann den Aufrufstack anschauen?

Ich denk ja immer noch, das in der DFM eine der verknüpften Datasets auf 'Active = True' gesetzt ist. Böse Falle: Man schaut, ob die ADOConnection im DFM connected ist... Nein, super, alles klar. Das aber ein Dataset beim Öffnen implizit per verknüpfter ADOConnection eine Verbindung herstellt, vergisst man leicht.

Außerdem gibt es zwei ADOConnection-Komponenten. Sind beide geprüft?

Ich verwende die GExperts und da gibt es die Möglichkeit unter "Set Component Properties" einzustellen, das bestimmte Eigenschaften beim Programmstart garantiert den eingestellten Wert haben.

Bei mir setze ich immer TADOConnection.Connected := False , sowie TDataset.Active := False .

Das GExpert-Modul parst dann vor dem Compilieren die DFM und stellt o.g. constraints sicher. Problem gelöst (bei mir zumindest).
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#30

AW: connection zum Server

  Alt 14. Mär 2013, 09:45
Ich denk ja immer noch, das in der DFM eine der verknüpften Datasets auf 'Active = True' gesetzt ist. Böse Falle: Man schaut, ob die ADOConnection im DFM connected ist... Nein, super, alles klar. Das aber ein Dataset beim Öffnen implizit per verknüpfter ADOConnection eine Verbindung herstellt, vergisst man leicht.
Im Posting #3 hatte claudine99 geantwortet: "die ADOConnection steht auf 'Connected:= false' und alle Querys, welche die Connection nutzen, stehen auf 'Active:= false'." Wie sollte dan in der DFM was anderes stehen? Hab ich da was verpaßt?

Danach hattest du in #5 den Rat gegeben: "Entferne mal den Connectionstring im Objektinspektor und compiliere/starte das Programm erneut." und claudine99 hat geantwortet: "Hab ich schon vorher entfernt. Ich baue die Connection ja erst auf, wenn gestetet wurde, ob es ein ini gibt. So sollte es jedenfalls sein."

Also mal ehrlich, mir kommt das alles ziemlich seltsam vor ... wenn mein Delphi sich so verhalten würde, käme ich glatt auf die Idee, mein PC sei kaputt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 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