Zugriff über ADO auf Kennwortgeschütze Access Datenbank

W-PC

Grünschnabel
Hallo ich hoffe hier kann mir jemand helfen.

Ich versuche mit Vb6 mittels Ado auf eine Access Datenbank zuzugreifen. Das ist auch alles kein Problem solange die Datenbank nicht Kennwort geschützt ist.

Jetzt habe ich schon einige Sachen ausprobiert und nix funktioniert.

Set gadc_Verbindung = New ADODB.Connection
pstr_Pfad = App.Path & "\Berichtsheft.mdb"
pstr_pass = ";User ID = Administrator;Password = 2002"
gadc_Verbindung.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & pstr_Pfad & pstr_pass
gadc_Verbindung.CursorLocation = adUseClient
gadc_Verbindung.Open

Dann komm ein schöner Laufzeitfehler.
Die Anwendung kann nicht gestartet werden. Die Informationsdatei der Arbeitsgruppe fehlt oder ist exclusive von einem anderen Benutzer geöffnet.

Also wenn jemand weiß wie es funktioniert bitte sagt es mir.
 

Dario Linsky

Erfahrenes Mitglied
das problem kenn ich, ich weiss allerdings gerade nicht aus dem kopf, wie ich das gelöst hab. ich weiss, dass es irgendwas mit der systemdatenbank von access (system.mdw) zu tun hat.
falls es möglich ist, kannst du aber einfach eine verbindung über eine odbc-schnittstelle aufbauen.

Code:
Private Sub Command1_Click()
On Error GoTo 1

Dim dbConn As ADODB.Connection
Dim strConn As String

strConn = "DSN=test;UID=Administrator;PWD=kennwort"

Set dbConn = New ADODB.Connection
dbConn.CursorLocation = adUseClient
dbConn.Open strConn

dbConn.Close
Set dbConn = Nothing

Exit Sub
1   MsgBox Err.Description

End Sub
mit diesem code klappt die verbindung nämlich. dabei ist nur das problem, dass es sich nicht um eine direkte verbindung handelt. die odbc-ressource musst du erst selber einrichten.
 

W-PC

Grünschnabel
Ne das geht nicht das ein Programm für mehrer Leute und das soll funktionieren ohne das die sich den ODBC Treiber erst anlegen müssen.
Außerdem soll das Verzeichnis zu ändern sein das ist mit DSN zu umständlich.

Wenn dir wieder einfällt wie du das Problem gelöst hast kannste das ja mal bitte schreiben.

Aber trotzdem Danke schonmal
 

Dario Linsky

Erfahrenes Mitglied
das problem ist einfach, dass das kennwort nicht in der datenbank selber gespeichert wird, sondern in einer systemdatenbank. wenn du die datenbank mit einem kennwort schützen willst, musst du die verbindung mit hilfe der systemdatenbank (system.mdw) öffnen. und das geht glaub ich nur mit einer odbc-schnittstelle.

da bieten sich dann zwei weitere möglichkeiten:
entweder du legst aus deinem programm heraus eine odbc-ressource an, die der benutzer definieren kann - oder du bastelst dir deinen eigenen schutzmechanismus für die datenbank.