Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   connection zum Server (https://www.delphipraxis.net/173684-connection-zum-server.html)

claudine99 11. Mär 2013 09:08


connection zum Server
 
Hallo, ich habe eine Anwendung, welche auch außerhalb eines Firmennetzes mit einer NAT-IP gestartet werden soll. Dazu haben wir die NAT-IP in einem ini-File "verpackt" und im Quellcode bei 'on create'folgendes festgelegt:

Delphi-Quellcode:
ConnString :=
  'Provider=SQLOLEDB.1;Persist Security Info=False;' +
  'User ID=%s;Password=%s;Data Source=%s;Use Procedure for Prepare=1;' +
  'Initial Catalog=ABCDEF;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;'+
  'Tag with column collation when possible=False';

  UserName := 'DMT#';
  PassWord := 'dmt';
  IP := GetIPfromINI('NAT_IP.ini');
  DM.AdoConnection1.CLOSE;
  DM.ADOCon__DWH.Close;
  try
     Memo1.Lines.Append('try connect to IP: ' + IP);
     Memo1.Lines.Append('');
     DM.AdoConnection1.ConnectionString := Format(ConnString,[UserName, PassWord, IP]);
     DM.AdoConnection1.Open;
     DM.ADOCon__DWH.ConnectionString := Format(ConnString,[UserName, PassWord, IP]);
     DM.ADOCon__DWH.Open;
     if IP = '12.345.678.910'then
       Memo1.Lines.Append('Connection to IP: 12.345.678.910')
     else
      Memo1.Lines.Append('Connection to NAT IP: ' + IP);

  except
   on E: Exception do
   begin
    Memo1.Lines.Append('No connection to database available, please check IP in the NAT_IP.ini!') ;

   end;

  end;
Warum aber, versucht das Programm trotzdem zuerst auf die 12.345.678.910 zuzugreifen?

Viele Grüße und Danke für jede Hilfe!

Sir Rufo 11. Mär 2013 09:47

AW: connection zum Server
 
Kann es sein, dass die ADOConnection mit
Delphi-Quellcode:
Active := True
compiliert wurde? ;)

Das
Delphi-Quellcode:
OnCreate
Event wird aufgerufen nachdem alle Komponenten (auch die ADOConnection) erzeugt wurden. Und wenn die mit
Delphi-Quellcode:
Active := True
compiliert wurde, dann verbindet die sich halt erst einmal

claudine99 12. Mär 2013 12:11

AW: connection zum Server
 
nein, leider nicht:(
die ADOConnection steht auf 'Connected:= false' und alle Querys, welche die Connection nutzen, stehen auf 'Active:= false'.

Sir Rufo 12. Mär 2013 12:20

AW: connection zum Server
 
Zitat:

Zitat von claudine99 (Beitrag 1207086)
nein, leider nicht:(
die ADOConnection steht auf 'Connected:= false' und alle Querys, welche die Connection nutzen, stehen auf 'Active:= false'.

Das alle verbundenen DataSets dann auch nicht aktiv sind, ist logisch ;)

So als Tip, ich würde die Verbindungseigenschaften im Event Delphi-Referenz durchsuchenTADOConnection.BeforeConnect setzen, dann kannst du sicher sein, wenn die Verbindung geöffnet wird (egal von wo und wem) sind auch die richtigen Verbindungsparameter gesetzt ;)

Wenn du dann noch einen Haltepunkt auf diesen Event setzt, dann kannst du auch über den CallStack sehen, wer da die Verbindung so öffnet (auch wenn es dir eigentlich egal sein könnte)

Furtbichler 12. Mär 2013 12:21

AW: connection zum Server
 
Entferne mal den Connectionstring im Objektinspektor und compiliere/starte das Programm erneut.

Was passiert?

claudine99 12. Mär 2013 12:36

AW: connection zum Server
 
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 :x
Leider immer das selbe Ergebnis.

Jumpy 12. Mär 2013 14:45

AW: connection zum Server
 
Nur mal doof gefragt. Was steht denn in der variablen IP?
Sicher das der Zugriff auf die INI funzt?

claudine99 12. Mär 2013 16:37

AW: connection zum Server
 
wenn ich das Codebeispiel bei 'beforeConnect' hineinschreibe bekomme ich eine Fehlermeldung: EStackoverflow mit der Meldung 'Stack-Überlauf'

Furtbichler 12. Mär 2013 16:56

AW: connection zum Server
 
Du schreibst im BeforeConnect' natürlich nicht 'MyConnection.Open;' rein. Denn dann wird ja 'BeforeConnect' aufgerufen (schätze ich).

Aber Du hast einen Wurm in deiner SW, wenn Du nicht mal weißt, wo die Verbindung aktiviert wird.

claudine99 12. Mär 2013 17:00

AW: connection zum Server
 
so wird die ini ausgelesen:

////////////ini auslesen

function GetIPfromINI(cFile:string):string;
var
ini: TIniFile;
filename: String;
begin
Result:='';
filename := ExtractFilePath(ParamStr(0)) + cFile;
ini := TIniFile.Create(filename);
try
Result := ini.ReadString('connection', 'IP', '12.345.678.910');
finally
ini.Free;
end;
end;
////////////////////////////////////


die ini heißt auch richtig und steht im gleichen Ordner wie die .exe.
Wäre super, sollte jemand noch eine Idee haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.
Seite 1 von 4  1 23     Letzte »    

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