SQLSTRINGCONNECT()

21/09/2007 - 13:04 von Matthias Kahlert | Report spam
Habadere mitanander...

ich hab ein Problem mit SQLSTRINGCONNECT()... entweder ich einfach zu
blöd, oder ich seh den Wald vor lauter Bàumen nicht...

Problemstellung:
Ich habe in meinem Programm verschiedene Connect-Strings hinterlegt, und
der Client soll selbst ausprobieren, welcher ihm passt.
Er soll es als erstes mit dem "SQL Native Client" versuchen, wenn der
nicht geht, soll er auf den Treiber "SQL Server" ausweichen, und wenn
der auch nicht klappt dann soll er es über eine DSN versuchen.
Die Werte liegen in einer INI-Datei, so dass die Pflege der Clients
relativ simpel erfolgen kann, ohne dass man bei einer Änderung zu jedem
Client laufen muss.

Der Code sieht in etwa so aus: (etwas gekürzt)


lcS1 = DRIVER=SQL Native Client; SERVER=bigblock; DATABASE=MaxPro;
Trusted_Connection=Yes;"

lcS2 = "DRIVER=SQL Server; SERVER=bigblock; DATABASE=MaxPro;
Trusted_Connection=Yes;"

lcS3 = "DSN=MaxPro; APP=MaxProClient; WSID=MaxProClient;"

gnSQLHandle = SQLSTRINGCONNECT(lcS1, .T.)
IF gnSQLHandle <= 0 THEN
IF LEN(lcS2) > 0 THEN
gnSQLHande = SQLSTRINGCONNECT(lcS2, .T.)
IF gnSQLHandle <= 0 THEN
IF LEN(lcS3) > 0 THEN
gnSQLHandle = SQLSTRINGCONNECT(lcS3, .T.)
ENDIF
ENDIF
ENDIF
ENDIF


Also:
Verbindungsversuch Variante 1, wenn der Handle -1 ist, dann nàchsten
Versuchen, etc.

Das seltsame ist nur: Der zweite Versuch wird ausgelassen?!

Als Beispiel: Wenn ich im ersten ConnectString einen falschen
Treibernamen eingebe, dann schlàgt der erste Versuch fehlt (so wie es
sein sollte), aber das komische ist: Der zweite Versucht klappt dann
auch nicht! Der Dritte über DSN geht wieder!

Der zweite ConnectString ist aber in Ordnung! Der funktioniert, wenn ich
ihn an die erste Position verschiebe...

Nur: Wenn vorher ein fehlgeschlagener Versuch war, dann funktioniert er
nicht...

Hab ich was übersehen? Muss ich nach einem fehlgeschlagenen Versuch
irgendwas "aufràumen" oder so? Oder einen Reset machen?

Ich bin momentan ratlos...

Matthias Kahlert
http://www.max-pro.de
 

Lesen sie die antworten

#1 Bernhard Sander
21/09/2007 - 14:23 | Warnen spam
Hallo Matthias,

gnSQLHandle = SQLSTRINGCONNECT(lcS1, .T.)
IF gnSQLHandle <= 0 THEN


frag hier mal mit AError() ab, was los war. Vielleicht liefert das noch ein
bisschen mehr Erkenntnis.

Gruß
Bernhard Sander

Ähnliche fragen