ODBC Connection im Nachhinein anpassen

Babsi

SQL-Guru
Beiträge
172
Hallo,

ich bin gerade fertig mit der Migration von Accesstabellen auf SQL Server. Für die Accessanwendung habe ich dann eine ODBC DSN Verbindung mit
Windows Authentifizierung eingerichtet. Soweit so gut.
Nun wird eine Koipe des Frontend erstellt und ich gebe es an Mitarbeiter weiter, die sich natürlich mit ihren Nutzerdaten anmelden.
Wenn ich dann die zuvor eingerichtete ODBC Verbindung nutzen will muss ich immer alle Tabellen neu einbinden, kann ich das irgendwie so Einstellen, dass dies nicht notwendig ist? Wieso erkennt er nicht, ads die Tabelle schon da sind.
Die User sind auf dem SQL Server eingerichtet, auch mit Windows Authentifizierung.

LG Babsi
 
Werbung:
Ich glaube, früher war das kein Problem. Früher bedeutet aber deutlich vor Office 365. Da gab es noch eine eigene Rechteverwaltung für Access. Ach keine, Ahnung, ich bin da schon lange raus.
Ist das eine User DSN ? Oder System - oder Datei DSN? Wie auch immer, das sind ja alles lokale Einstellungen. Ggf. kann man über irgendwelche Policies bzw. Domainen Settings definieren, dass es "die gleiche" DSN ist.
Ansonsten könnte man noch ein programmatisches "Reconnect" machen auf alle Tabellenverknüpfungen. Müsste ja ohne Interaktion funktionieren, wenn es Domain -/ Windows Authentication ist.
 
GIbt es beim Manager für Verknüpfte Tabellen einen Schalter namens "Immer fragen"? Wenn ja, vielleicht reicht es ja, den Vorgang der Neuverknüpfung einmalig zu wiederholen und das "Immer fragen" vorher abzuwählen.
 
Hallo dabadepdu,

ja, office 365 ist so eine Sache.
Sytem DSN habe auch schonb andere gefragt, sie meinten, so wie es aufgesetzt ist müsste es eigentlich laufen...
An VBA Code habeb ich auch schon gedacht, aber das sind sooo viele Tabelle...Das wollte ich mir erparen...
bzw. Domainen Settings definieren ok....?
 
Guten Morgen,

mit Office 365 habe ich noch keine Erfahrung, aber ich aktualisiere die Tabelleneinbindung beim Starten von Access immer automatisch und das könnte man sicherlich auch während der Laufzeit ändern. Das setzt allerdings eingerichtete ODBC Verbindungen auf den Systemen voraus.

Meine Lösung sieht wie folgt aus:

Code:
Function ReLinkTables(myusername, myPassword, myDatabase, myDNS)
5     On Error GoTo Err_ReLinkTables

10        Set global_AktDb = CurrentDb()
         
          Dim Tabdef As TableDef
          Dim QueryDef As QueryDef
          Dim Prop As Property, tmp
         
         
15        DoCmd.Hourglass True
         
20        For Each Tabdef In global_AktDb.TableDefs
25            If Tabdef.Connect Like "ODBC*" Then
30                If Tabdef.Name Like "dbo_*" Then
35                    Tabdef.Connect = "ODBC;Database=" & myDatabase & ";DSN=" & myDNS & ";UID=" & myusername & ";PWD=" & myPassword
                 
40                DoCmd.Echo True, "Die Tabellen werden eingebunden, einen Moment bitte."
45                Tabdef.RefreshLink
50                End If
55            End If
60        Next
         
65        For Each QueryDef In global_AktDb.QueryDefs
70            If QueryDef.Connect Like "ODBC*" Then
75                QueryDef.Connect = "ODBC;Database=" & myDatabase & ";DSN=" & myDNS & ";UID=" & myusername & ";PWD=" & myPassword
80                DoCmd.Echo True, "Einen Moment noch."
85            End If
90        Next
95        DoCmd.Hourglass False

Exit_ReLinkTables:
100       Set global_AktDb = Nothing
105       Exit Function

Err_ReLinkTables:
110       MsgBox Err.Description
115       Resume Next
120       Resume Exit_ReLinkTables
         
End Function

Der Aufruf erfolgt in einem Startformular mit:

Code:
ReLinkTables "Username", "Kennwort", "Name der ODBC Verbindung", "Datenbank auf dem SQL Server"

Das ganze kann man sicherlich auch anders oder eleganter lösen, aber bei mir funktioniert das seit langer Zeit ohne Probleme und daher habe ich mich nie darum gekümmert, das ggf. zu überdenken oder zu ändern.

Michael
 
Zuletzt bearbeitet:
Hallo und sorry wegen der späten Rückmeldung. Ja, ich kenne das aber da müsste ich sämtliche Tabellen in eine Tabelle eintragen, sollte ich auch irgendwan mal so aufbauen aber zum Testen hab ich jetzt veinfach verknüpft über Externe usw....
 
Werbung:
Ich glaube, früher war das kein Problem. Früher bedeutet aber deutlich vor Office 365. Da gab es noch eine eigene Rechteverwaltung für Access. Ach keine, Ahnung, ich bin da schon lange raus.
Ist das eine User DSN ? Oder System - oder Datei DSN? Wie auch immer, das sind ja alles lokale Einstellungen. Ggf. kann man über irgendwelche Policies bzw. Domainen Settings definieren, dass es "die gleiche" DSN ist.
Ansonsten könnte man noch ein programmatisches "Reconnect" machen auf alle Tabellenverknüpfungen. Müsste ja ohne Interaktion funktionieren, wenn es Domain -/ Windows Authentication ist.
Funktinioert jetzt, System DSN
 


Schreibe deine Antwort....
Zurück
Oben