News & Tipps zu Microsoft Access

Lesen Sie hier einige der besten Beiträge aus SmartTools Access Weekly sowie ausgewählte Inhalte anderer E-Mail-Newsletter von SmartTools Publishing rund um Microsoft Access.

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.