![]() |
Datenbank: MSQL • Version: 2005 • Zugriff über: ADO
ADOConnection Servernamen ermitteln...
Wie der Titel schon beschreibt baue ich eine Verbidung mit einem Server auf und wähle eine Datenbank aus, welche dann im späteren Verlauf des Programmes noch bearbeitet wird etc... Jedoch würde ich zur Übersicht gerne einen "Infokasten" einfügen in dem der Servername und die angewählte Datenbank stehen. Wie ich den Namen der Datenbank herausbekomme ist kein Problem,
(ADOConnection.DefaultDatabase), jedoch finde ich keine Möglichket den Server herauszusuchen. |
AW: ADOConnection Servernamen ermitteln...
Hi, das steht im ConnectionString drin.
|
AW: ADOConnection Servernamen ermitteln...
stimmt... dann baue ich jetzt mal ne Funktion um nur den Servernamen rauszufiltern
|
AW: ADOConnection Servernamen ermitteln...
habe jetzt eine Prozedur geschrieben, welche den Data Source Teil, welcher sich im Connection string zwischen dem 4. und dem 5. ";" befindet, rauskopiert. Der resultierende String fängt an der richtigen Stelle an, endet aber zu weit hinten :?
Hier mein bisheriger quelltext:
Delphi-Quellcode:
Edit: Die Varialbe u zählt in der Prozedur die vorkommenden ";"
procedure TFMain.ServerNamen(const Con: TADOConnection);
var Verbindung: string; i, u: Integer; Start, Ende: Integer; begin ServerName := ''; Verbindung := Con.ConnectionString; u := 0; for i := 0 to length(Verbindung)-1 do begin if Verbindung[i] = ';' then begin u := u + 1; if u = 4 then begin Start := i; end; if u = 5 then begin Ende := i-1; end; end; end; for i := Start to Ende do begin if Verbindung[i] = '=' then begin Start := i + 1; Break; end; end; ServerName := Copy(Verbindung, start, ende); end; |
AW: ADOConnection Servernamen ermitteln...
Wieso suchst Du nicht einfach nach "Remote Server=" und kopierst ab da bis zum nächsten Semikolon oder bis zum Stringende, falls kein Semikolon mehr kommt?
|
AW: ADOConnection Servernamen ermitteln...
Hallo,
Du benutzt ja MSSQL, erstelle ein TADOQuery mit folgendem SQL-Text:
Code:
und in z.B. Fields[0].asstring hast Du dann den Servernamen.
select @@servername as SRVName
Grüßle |
AW: ADOConnection Servernamen ermitteln...
@DeddyH: das probiere ich ja in etwa. Ich weiß, dass im connectionstring der teil den ich haben will zwischen dem 4. und dem 5. Semikolon steht. Deswegen setze ich den "start" an die Position hinter dem 4. und das "ende" vor das 5.. Dann wird in diesem eingegrenzten Stück nach dem '=' gesucht, denn es steht ja immer Data Source=... und der Start-Wert wird hinter das '=' verschoben... also habe ich theoretisch den Bereich in dem sich meine Daten befinden gefunden und kann die Daten einfach rauskopieren...
Komisch ist nur, dass mir beim setzen eines Breakpoints für den startwert 111 und für den endwert 130 angegeben werden. Was auch logisch ist, denn die Zeichen des Servernamens sind wirklich 19! Jedoch gibt er mir bei der Ausgabe zuviel heraus :? |
AW: ADOConnection Servernamen ermitteln...
Hab den Fehler gefunden :-D Das Problem war die Copy Funktion. Habe gedacht, dass man den string angibt den anfangspunkt und den endpunkt, aber man muss ja den string, den anfangspunkt und die Länge des stringteiles angeben :oops:
Hier mein verbesserter Code, falls jemand ähnliches irgenwann, irgendwie, irgendwo benötigt:
Delphi-Quellcode:
Danke für eure Hilfe :thumb:
procedure TFMain.ServerNamen(const Con: TADOConnection);
var Verbindung: string; i, u: Integer; Start, Ende: Integer; begin ServerName := ''; Verbindung := Con.ConnectionString; u := 0; for i := 0 to length(Verbindung)-1 do begin if Verbindung[i] = ';' then begin u := u + 1; if u = 4 then begin Start := i; end; if u = 5 then begin Ende := i; end; end; end; for i := Start to Ende do begin if Verbindung[i] = '=' then begin Start := i + 1; Break; end; end; ServerName := Copy(Verbindung, start, Ende-start); end; |
AW: ADOConnection Servernamen ermitteln...
Ich bin nicht besonders fit in ADO, aber kann der Servername nicht auch z.B. zwischen dem 2. und 3. Semikolon stehen? Oder ist die Reihenfolge der Parameter nicht beliebig?
|
AW: ADOConnection Servernamen ermitteln...
wenn das so wäre, dann müsste ich tatsächlich nach "Data Source=...;" suchen. Ich greife auf einen Server zu, den ich auf dem gleichen Rechner starte. hmm...
Dann müsste ich ja theoretisch den Connectionsstring in ;...; bröckenchen in ein Array schreiben und dann die ersten 12 Buchstaben mit "Data Source=" vergleichen. Ich gebe mich mal dran, dann ist man auf jedenfall auf der sicheren Seite |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz