VisualBasic VB6 - Verbindung zum SQL-Server testen

Krik

Fleet Admiral
Registriert
Juni 2005
Beiträge
15.227
Moin

Erst mal dieser Codeauszug:
Code:
Public Cn As New ADODB.Connection

    ' ...

    ' Eingaben überprüfen
    Dim strcnnTest As String
    strcnnTest = "provider=sqloledb; " & _
                 "Data Source=" & ServerText.Text & "; " & _
                 "Initial Catalog=" & DatenbankText.Text & "; " & _
                 "User ID=" & BenutzerText.Text & "; " & _
                 "Password=" & PasswortText.Text & "; "
    Cn.Errors.Clear
    Cn.Open strcnnTest
    
    ' Verbindungsfehler aufgetreten?
    If Cn.Errors.Count > 0 Then
        ' ...
Mit der If-Abfrage wollte ich eigentlich testen, ob Cn.Open funktioniert hat, aber der Debugger meckert schon direkt bei Cn.Open.

Gibt es eine Möglichkeit so auf Fehler zu testen, dass der Debugger auch zufrieden ist?


Gruß, Laurin
 
Code:
Public Cn As New ADODB.Connection

On Error GoTo CnnFehler

    ' ...

    ' Eingaben überprüfen
    Dim strcnnTest As String
    strcnnTest = "provider=sqloledb; " & _
                 "Data Source=" & ServerText.Text & "; " & _
                 "Initial Catalog=" & DatenbankText.Text & "; " & _
                 "User ID=" & BenutzerText.Text & "; " & _
                 "Password=" & PasswortText.Text & "; "
    Cn.Errors.Clear
    Cn.Open strcnnTest
    goto Ende
    
CnnFehler:
msgbox "Wäääh.... Hat nicht geklppt"

Ende:

Cnn.Open verursacht einen Laufzeitfehler. Darum nutzt dir die Error-Geschichte des Objekts erstmal nichts. Kannst es so machen wie oben oder mit "On Error Resume Next" die Fehlerbehandlung abschalten und dein Objekt benutzen.
 
also ich mach die connection immer so auf:

Set conn = New ADODB.Connection
With conn
.Provider = "SQLOLEDB.1" 'Datenbanktreiber für den Zugriff auf SQL Server 2000
'.Provider = "SQLNCLI.1" 'Datenbanktreiber für den Zugriff auf SQL Server 2005
.Properties("Persist Security Info").Value = False
.Properties("Data Source").Value = strServer
.Properties("Initial Catalog").Value = strDatenbank
.Properties("User ID").Value = strBenutzer
.Properties("Password").Value = strKennwort
.ConnectionTimeout = "100"
.Open
End With
 
Hi,

ich benutze zur Zeit nur VBS, daher bin ich mir nicht sicher ob diese Lösung Dir weiterhilft, aber müsste nicht bei Deinem CN.open die SQL Anweisung mitgeben werden?


Public Cn As New ADODB.Connection

' ...

' Eingaben überprüfen
Dim strcnnTest As String
Dim sQry As String
strcnnTest = "provider=sqloledb; " & _
"Data Source=" & ServerText.Text & "; " & _
"Initial Catalog=" & DatenbankText.Text & "; " & _
"User ID=" & BenutzerText.Text & "; " & _
"Password=" & PasswortText.Text & "; "
Cn.Errors.Clear
sQry = "Select * From Tabelle"
Cn.Open sQry, strcnnTest

' Verbindungsfehler aufgetreten?
If Cn.Errors.Count > 0 Then
' ...
 
@Alkor35
Bei VBA ist es etwas anders. Die SQL-Abfragen laufen über ein Recordset-Objekt.

@benz_s
Die verschiedenen Provider wollte ich später erst einbauen. Aber die Variante, alles in Properties zu schreiben, geht natürlich auch.

@MacGyver
Danke. On Error Resume Next macht genau das, was ich will. :)
 
Zurück
Oben