none
Daten Schreiben - Verbindungsstring ADO von Excel 2010 zu Access 2010 mit Datenbankkennwort

    Frage

  • hallo ich will in eine Datenbank schreiben mit Datenbankkennwort, und ich kann den Befehl leider nicht einbauen, wer kann mir hier helfen

    .Properties("Jet OLEDB:Database Password") = "testkennwort"

    'On Error GoTo Fehler
        Dim db As Object, dbe As Object, rs As Object
        Set dbe = CreateObject("DAO.DBEngine.120")
        Set db = dbe.OpenDatabase("\\SRV_SHARE\DWH\Reklamationen.accdb")
        Set rs = db.OpenRecordset("Reklamationen")
            rs.AddNew 'Auslesen der Zeilen aus Excel und Zuweisung in DB
            rs("IDMonat") = Format(Now, "MMYYYY")
            rs("PERSOID") = Environ("Username")
            rs("DatumRekla") = Now
            rs("CIN") = TextBox2
            rs("Kontonummer") = TextBox3
            rs("EOD") = TextBox6
            rs("Produkt") = TextBox7
            rs("Reklagrund") = ComboBox1
            rs("Übertragung") = "MeinMIS"
            rs("Stand Live") = "Eingegangen"
            rs("Anmerkungen") = TextBox15 & " // " & TextBox9
            rs.Update
        rs.Close
    MsgBox "Die Reklamation wurde erfolgreich übermittelt. Sie sehen diese nun sofort Live in der Übersicht.", vbOKOnly, "Titel"
    Me.Hide
    Fehler:
        MsgBox err.Number & ": " & err.Description
        err.Clear
    Exit Sub
    leer:
    MsgBox "Bitte gebe einen Reklamationsgrund an.", vbInformation, "Titel"



    Freitag, 27. April 2012 07:48

Antworten

Alle Antworten

  • Hallo!

    Bei DAO musst du das Datenbankpasswort in OpenDatabase einbauen.

    set db = dbe.OpenDatabase("\\SRV_SHARE\DWH\Reklamationen.accdb", False, False, ";PWD=testkennwort")

    Tipp: setze zum Programmieren einen Verweis auf DAO, dann hast du IntelliSense zur Verfügung und kannst auch im Objektkatalog nachsehen. In der DAO/ACE- bzw. Access-VBA-Hilfe sollte das auch beschrieben sein.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 27. April 2012 07:56
  • Hallo Martin,

    zunächst einmal arbeitest Du in Deinem Code mit DAO, nicht mit ADO wie es im Subject steht.

    Und wie man das Datenbank Passwort im Connectin String mitgeben kannst, kannst Du hier nachlesen, ist gleich das zweite Beispiel: http://www.connectionstrings.com/access-2007


    Olaf Helper
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich
    Blog Xing

    Freitag, 27. April 2012 07:57
  • [OT]

    Hallo!

    @Olaf: das ADODB-Beispiel wurde kurz vorher in einem extra Thread behandlet. ;-)

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 27. April 2012 07:59
  • Leider kommt der Fehler: Kennwort unzulässig. Ich nutze Excel und Access 2010.
    Freitag, 11. Mai 2012 10:22
  • Hallo!

    Vielleicht stimmt die Fehlermeldung und das Datenbankkennwort ist falsch? ;-)

    Kannst du eine Beispiel-mdb und eine Excel-Datei erstellen, in der das Problem auftritt?
    Ich vermute nämlich einen kleinen Fehler, der dir nicht ins Auge sticht, aber so einfach ist, dass wir ihn so nicht finden.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 11. Mai 2012 10:37
  • 
    Dim Pfad
    Pfad = "\\dcdep89861002\"
        If Right(Pfad, 1) <> "\" Then Pfad = Pfad & Application.PathSeparator
        
    If Dir(Pfad & Dateiname) = "" Then
    MsgBox "Der Abschluss konnte nicht reportet werden." & _
    vbCrLf & vbCrLf & "Zu Ihrer Unterstüzung wird der Abschluss im Offline Command Center gespeichert und kann " & _
    vbCrLf & "von dort aus manuell von Ihnen übertragen werden.", vbInformation = vbOKCancel, "MeinMIS"
    Else
    'Hier gibt das Modul die Daten an die Access Datenbank weiter.
    On Error GoTo Fehler
    Dim CNRTK
    Dim GKCNR
    Dim CCCNR
     GKCNR = "450"
     CCCNR = "150"
        Dim db As Object, dbe As Object, rs As Object
        Set dbe = CreateObject("DAO.DBEngine.120")
        Set db = dbe.OpenDatabase("\\dcdep89861002\FeedbackFiliale.accdb", False, False, ";PWD=5d27838e0719cac7b9c57a2b5f")
        Set rs = db.OpenRecordset("Feedback")
    '    rs.FindFirst "[Lot]='" & Cells(5, 4) & "'" ' bei Text
         'rs.FindFirst "[Lot]=" & Cells(5, 4)      ' bei Zahl <--- Lot ist eine Zahl und Primär in DB
    'Ab hier springt das Makro zur Fehlermeldung am Ende
            'If Not (rs.NoMatch) Then
           ' MsgBox "Wert schon vorhanden!!!"
           ' Exit Sub
      '  End If
      Dim FILMA
            rs.AddNew 'Auslesen der Zeilen aus Excel und Zuweisung in DB
            Range("Einstellungen!B27") = rs("ID")
            rs("Filiale") = frmAbschluss.TextBox3
            rs.Update
        rs.Close
    End If
        Exit Sub
    Fehler:
        'MsgBox err.Number & ": " & err.Description
        err.Clear
    End Sub

    Freitag, 11. Mai 2012 10:49
  • Hallo!

    Mit welcher Verschlüsselungsmethode hast du die accdb-Datei verschlüsselt?

    Wenn ich die "Legacyverschlüsselung" verwende, läuft de Code auch in Excel.
    Verwende ich "Standardverschlüsselung", läuft der Code nur aus Access (aus einer anderen accdb) heraus.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 11. Mai 2012 12:06
  • Wie stelle ich das denn um?
    Freitag, 11. Mai 2012 12:13
    1. accdb exklusiv öffnen
    2. accdb entschlüsseln
    3. Access-Optionen - Clienteinstellungen
      ganz unten: Verschlüsselungsmethode
    4. accdb erneut verschlüsseln

    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 11. Mai 2012 12:23
  • Ich habe es nun geändert die Verschlüsseklungsmethode jedoch kommt immer noch der gleiche Fehler.

    Behindert das die Datenbank, da mehrere Benutzer gleichzeitig mit der Datenbank arbeiten bzw über ein Macro Datein eintragen?

    Freitag, 11. Mai 2012 12:41
  • Der Mehrbenutzerzugriff sollte egal sein - außer die DB wird exclusiv geöffnet oder die laccdb-Datei kann nicht erstellt werden.

    Ich kann nur behaupten, dass es bei mir mit "Legacyverschlüsselung" unter Access 2010 und Excel 2010 funktioniert.
    Wenn du eine Beipiel-accdb und eine Excel-Datei (die darauf zugreift) erstellt, in denen das Problem auftritt, sehe ich mir das gerne an.

    Anonsten kann ich leider nicht mehr weiterhelfen, da das Problem vermutlich an irgendwelchen mir unbekannten Einstellungen in deiner Anwendung liegen wird.

    Zur Fehlereinschränkung könntest du deinen Code auch einmal aus einer weiteren accdb testen. Falls dort auch die gleiche Fehlermeldung kommt, ist die DB vielleicht auch noch per mdw geschützt.

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 11. Mai 2012 12:53
  • Also ich habe eine neue Datenbank erstellt und verschlüsselt und es kommt der gleiche Fehler :(

    Sie ist als lagacy.. verschlüsselt und alsaccdf gespeichert.

    Was kann ich tun?

    Gibt es eine andere möglichkeit Daten in Access zu schreiben und zu ändern, sowie zu löschen  mittels macro und vba


    Er Liefert den Fehlercode 3031 aus
    Freitag, 11. Mai 2012 13:25
  • Wenn ich es mit nur 13 Zeichen mache das Kennwort und mit Buchstaben dann geht es. Er nimmt die länge scheinbar nicht.

    Freitag, 11. Mai 2012 13:48
  • Hallo!

    Die Anzahl der Zeichen kann es meiner Ansicht nach nicht sein. Ich verwendete bei meinem Test das Passwort "test" und es kam auch zu diesem Fehler. Hast du die Schritte 1-4 nachgemacht oder hast du eventuell am Anfang übersehen, die DB zu entschlüsseln bevor du sie mit Legacy-Verschlüsselung erneut verschlüsselt hast?

    Beispiel zum Ausprobieren (irgendwer muss ja so eines einmal bereitstellen, damit wir die gleiche Ausgangsbasis haben ;-)): TestAc2010EncryptDb.zip

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch


    Freitag, 11. Mai 2012 13:52
  • Kannst du mal versuchen das mit dem Kennwort 

    5d27838e0719cac7b9c57a2b5f

    zu verschlüsseln dann geht es nicht.

    Danke für deine Datei. Habe auch nochmal alles versucht jedoch das gleiche Macro 1:1 von mir klappt mir dem kurzen Kennwort mit dem langen nicht-

    Freitag, 11. Mai 2012 14:10
  • Hallo!

    Ich probierte es nun auch mit dem langen Kennwort aus.

    Das Ergebnis ist ... naja ich sag einfach einmal interessant.;-)

    Access scheint intern ohne Kommentar abzuschneiden, wenn man ein längeres Passwort eingibt.

    Set db = dbe.OpenDatabase("...", False, False, ";PWD=" & Left("5d27838e0719cac7b9c57a2b5f", 20)

    Dann tritt das Problem zumindest bei Legacy-Verschlüsselung nicht mehr auf.

    BTW: in den Access-Spezifiatkionen steht übrigens: "Anzahl von Zeichen in einem Kennwort: 20"

    mfg
    Josef


    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch


    Freitag, 11. Mai 2012 14:32
  • Ja es ist schon sehr komisch ;)

    mit dem Vermerkt

    Left,....", 20

    Kann ich nun doch das lange Kennwort nehmen? Werde es nun aber bei dem kurzen lassen :) sonst muss ich wieder alles umstellen.

    Aber das ist doch mal eine hammer Nummer mit den Abschneiden :)

    Freitag, 11. Mai 2012 14:42