PDA

Vollständige Version anzeigen : zwischen 2 MS SQL-Datenbanken umschalten


michaelarban
23.03.2006, 15:20
Hallo,

ich habe eine generelle frage:

ich habe ein Access-Projekt (also .adp und nicht .mdb), welches auf einen MS-SQL-Server zugreift.

Bis jetzt läuft es so ab: Beim Starten des Access-Projektes verbindet sich das Programm mit der Datenbank und verlangt vom User ein Login + Passwort.


In zukunft soll es so ablaufen: Beim Start soll der User gefragt werden, mit welcher Datenbank er verbunden werden möchte. (Datenbank A oder B, beide liegen auf dem SQL-Server. Beide Datenbanken habe genau das gleiche schema, tabellen usw., nur verschiedene Informationen ) . Nach Auswahl einer Datenbank soll der User wieder wie gewohnt nach login + Passwort gefragt werden.

Wie könnte man so was realisieren?

danke für jede antwort

Locutus
23.03.2006, 22:08
Hallo Michael,

Man kann es so machen, daß der Benutzer beim Start ein Formular angezeigt bekommt, wo er aus einem Kombinationsfeld den Datenbanknamen auswählt. Für die Verbindung zu einer neuen Datenbank habe ich mir folgende Prozedur erstellt :Public Sub ChangeDB(NewDBName As String, NewSQLServer As String)
'=============================================================================== ========
' Funktion: ChangeDB
' Zweck: Verbindet Projekt mit Datenbank auf SQL-Server
' Argumente: Datenbankname, SQL-Server
' Aufrufe:
' Rückgabe: -/-
'---------------------------------------------------------------------------------------
On Error GoTo ChangeDB_Err

Dim ConnectStr As String
Dim InitCat As String, StartPos As Integer, EndPos As Integer

'Statusanzeige "Verbinde zum SQL-Server..."
ConnectStr = CurrentProject.BaseConnectionString
StartPos = InStr(1, ConnectStr, "Initial Catalog", 1)
StartPos = InStr(StartPos + 15, ConnectStr, "=") + 1
EndPos = InStr(StartPos, ConnectStr, ";")
If EndPos = 0 Then
ConnectStr = Left(ConnectStr, StartPos - 1) + NewDBName
Else
ConnectStr = Left(ConnectStr, StartPos - 1) + NewDBName + Right(ConnectStr, Len(ConnectStr) - EndPos + 1)
End If

StartPos = InStr(1, ConnectStr, "DATA SOURCE", 1)
StartPos = InStr(StartPos + 11, ConnectStr, "=") + 1
EndPos = InStr(StartPos, ConnectStr, ";")
If EndPos = 0 Then
ConnectStr = Left(ConnectStr, StartPos - 1) + NewSQLServer
Else
ConnectStr = Left(ConnectStr, StartPos - 1) + NewSQLServer + Right(ConnectStr, Len(ConnectStr) - EndPos + 1)
End If

CurrentProject.OpenConnection ConnectStr

ChangeDB_Exit:
On Error Resume Next
'Statusanzeige ""
Exit Sub

ChangeDB_Err:
MsgBox "Fehler in Funktion ChangeDB" & vbCrLf & "Fehlercode: " & Err & vbCrLf & "Beschreibung: " & Error$
Resume ChangeDB_Exit

End SubAls Parameter erwartet die Funktion den Datenbanknamen und den Namen des SQL-Servers. Wenn letzterer immer gleich bleibt - um so einfacher.
Die Sache mit dem Anmelden müßte man noch einbauen, kann aber nicht so schwierig sein. Du brauchst für diese Spielchen einen Verweis auf die MS SQLDMO Object Library. Damit kann man dann auch prüfen, ob der Server läuft, ihn starten, beenden, Verbindungen dynamisch aufbauen -feine Sache!
Gruß
Jörn

michaelarban
24.03.2006, 07:55
hi, danke , ich probiere das mal nachher aus.

also der Aufruf dieser Funktion geschieht doch nur ein einziges mal beim start, nicht wahr?

bye

Locutus
24.03.2006, 09:06
Beim Start, ja.