2016-11-08 2 views
0

Ich versuche, Benutzerformulardaten von Excel (2013) an eine Access-Datenbank zu senden.Daten von Excel-Benutzerformular an passwortgeschützte Access-Datenbank senden

ohne Passwort funktioniert dieser Code einwandfrei.

Private Sub Addoer_Click() 
Dim cnn As ADODB.Connection 
Dim rst As ADODB.Recordset 
Dim dbPath 

dbPath = Sheet16.Range("K18").Value 

Set cnn = New ADODB.Connection 
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & dbPath 

Jetzt versuche ich, gleiche Methode zu verwenden, um Daten aus Excel in einem passwortgeschützten Datenbank zu senden (jeder Benutzer unterschiedliche Passwort hat). In der Excel-Datei ist die Benutzer-ID an Sheet16.Range ("K17") und das Passwort ist bei Sheet16.Range ("K19")

userid = Sheet16.Range("K17").Value 
pw = Sheet16.Range("K19").Value 

i der cnn.open Linie

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
"Data source=" & dbPath, userid, pw, -1 
zu folgenden geändert

und ich erhalte diese Störung:

Fehler -2147217843 (. Kann nicht Ihre application.The Arbeitsgruppen-Informationsdatei starten fehlt oder exklusiv von einem anderen Benutzer geöffnet)

ändert es die cnn.open Linie zu dieser

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & dbPath, """ & userid & """, """ & pw & """, -1 

und ich bekomme diesen Fehler

Fehler -2147217843 (Keine gültige Kontonamen oder Passwort).

Gibt es jemanden, der Ihnen helfen kann, zu zeigen, wo ich falsch gehandelt habe?

Antwort

0

Ihr zweiter Versuch funktioniert nicht, weil Sie den Benutzernamen als "user" übergeben, wenn der Benutzername tatsächlich user ist.

In Bezug auf Ihrem ersten Versuch fand ich diese Notiz bei connectionstrings.com:

Note! Reports say that a database encrypted using Access 2010 - 2013 default encryption scheme does not work with this connection string. In Access; try options and choose 2007 encryption method instead. That should make it work.

auch sein, könnte es, dass die Datenbank exklusiv von einem anderen Anschluss/Programm geöffnet wird? Wenn die Datenbank in Access geöffnet ist und Sie Tabellen/Abfragen entwerfen können, bedeutet das, dass Sie exklusiven Zugriff auf die Datenbank haben und keine anderen Verbindungen eine Verbindung herstellen können. Sehen Sie eine .laccdb (oder .ldb) Datei im selben Ordner wie die Access-Datenbank?

Referenzen:

+0

Die adodb Verbindungssyntax fordert den Benutzer-ID und das Kennwort in Zeichenfolge geschrieben werden. Wenn ich es wie den Wert einer bestimmten Zelle wie oben definiert hätte, muss ich es nicht darum herum setzen? – KZMN

+0

Ja, ich kann Tabellen und Abfragen in der Access-Datenbank erstellen. Bedeutet dies, dass der Code funktioniert Muss ich die Datenbank so einstellen, dass sie nicht exklusiv geöffnet wird? – KZMN

+0

@KZMN Nicht sicher, aber ich würde vermuten, dass Sie, wie Sie sagen, nur die doppelten Anführungszeichen um den Benutzernamen und das Passwort benötigen, wenn sie Teil der regulären Verbindungszeichenfolge sind Du übergibst sie als Parameter in 'conn.Open', dann brauchst du sie wahrscheinlich nicht. –