Autor Beitrag
Bronstein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Do 27.03.08 14:17 
Hallo,
ich habe ein kleines Tool geschrieben, das sich mit einer DB2-Datenbank verbindet.

Jetzt möchte ich das Programm auch an Rechnern nutzen die keine Verbindung zur Datenbank haben (Subnetz).

Hier zu möchte ich Abfragen, ob ich Zugriff auf die Datenbank habe. Und falls ich kein Zugriff habe, werden einige Features ausgeblendet.

Wie kann ich also prüfen ob die Datenbank verfügbar ist.

Ich könnte ja AdoConnection.Open in eine Try/Except-Block machen und bei einem Fehler ist die Datenbank nicht verfügbar. Das gefällt mir aber nicht, gibt es da noch ein andere Möglichkeit?

Der ConnectionString sieht folgendermaßen aus:
ausblenden Quelltext
1:
MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=ABC01;UID=abc01;MODE=SHARE;DBALIAS=ABC01;					

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Fr 28.03.08 22:51 
Hi,

ich habe das ganze mit der Indy tcpclient komponete gemacht. Einfach geprüft, ob er den DB2 Port (446) der Maschine in einer bestimmten Zeit connecten kann, wenn nicht entsprechende aktion ausführen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
// Verbindungsprüfung
   try
      IdTCPCli1.Connect(25);
      VerbLoc := true;
   except
      on E: exception do
        begin
        Memo1.Lines.Add(datetimetostr(now)+' '+E.message);
        VerbLoc:=false;
      end; //on
   end;// try
   IdTCPCli1.Disconnect;
   if VerbLoc = true then   // 1.if
   begin
  ......
   end
   else   // 1. if
   begin
      Application.Messagebox('Sie befinden sich nicht im lokalen Netz, '+
                             'deshalb ist diese Operationm nicht zulässig!',
                             'F E H L E R !',MB_OK + MB_IconStop);
      Memo1.Lines.Add(datetimetostr(now)+' Abruch , weil nicht im lokalen Netz');
   end; //else



Gruß Micha

_________________
Viele Wege führen nach Rom.