Beitrag aus SmartTools Access Weekly
Zugriff auf externe Datenbanken mit Kennwortübergabe
Access 365 2021 2019 2016 2013 2010
FRAGE Um Inhalte von Tabellen aus externen Datenbanken flexibel einbinden zu können, verwende ich eine Abfrage mit dem folgenden Inhalt: SELECT Tabelle.* FROM Tabelle IN 'X:\Datenbank.mdb';
Pfad und Dateiname lassen sich schnell im SQL-String ändern. Bisher waren die Datenbanken nicht mit einem Kennwort geschützt und der Zugriff funktionierte ohne Probleme. Nun müssen einzelne Datenbanken mit Kennwort gesichert sein. Das führt dazu, dass bei einer geschützten Datenbank bei jedem Zugriff die Eingabe des Datenbank-Kennwortes per Dialog abgefragt wird. Kann ich auch im SQL-String ein Datenbank-Kennwort angeben und wenn ja, wie genau muss der SQL-String aufgebaut sein?
S. Zöller
ANTWORT Wenn Sie ein Kennwort übergeben möchten, müssen anstelle eines einzelnen Pfades/Dateinamens komplette Verbindungsinformationen inklusive des zu verwendenden ISAM-Treibers angegeben werden. In diesen Verbindungsinformationen wird dann auch das Kennwort per "pwd=" übergeben. Das folgende Beispiel greift auf eine mit dem Kennwort "geheim" geschützte Datenbank "Adressen.mdb" zu und gibt die Anzahl vorhandener Adressen mit dem Kriterium "Land=Deutschland" aus einer Tabelle "Kunden" aus:
Sub SQL_With_PWD()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim SQL$
SQL$ = _
"SELECT * " & _
"FROM Kunden " & _
"IN '' [MS Access;" & _
"database=Z:\Test\Adressen.mdb;" & _
"pwd=geheim] " & _
"WHERE Land='Deutschland' " & _
"ORDER BY Firma;"
Set db = CurrentDb()
Set rs = db.OpenRecordset(SQL$, dbOpenSnapshot)
rs.MoveLast
MsgBox rs.RecordCount
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
Anstelle des Pfades/des Dateinamens wird eine leere Zeichenkette "''" übergeben. Daran erkennt Access, dass im Anschluss in eckigen Klammern die Verbindungsinformationen folgen und wertet diese entsprechend aus.