Announcement

Collapse
No announcement yet.

Import in eine Passwortgescützte .MDB

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Import in eine Passwortgescützte .MDB

    Hallo zusammen,

    da die User eines Erfassersystems mittels Access manuell Änderungen in der DB vorgenommen hatten die zu Problemen beim Datenaustausch führten möchte der Kunde nun dass die DB Passwortgeschützt wird.

    Alles so weit bestens, für den Datenimport von Text(CSV)-Dateien habe ich die Routine von Andreas Kosch verwendet, und nun habe ich das Problem dass es nicht schaffe ein Passwort über die Properties zu übergeben. Mein letzter Ansatz sieht so aus: <BR>

    <PRE> ImportConnect.Provider := 'Microsoft.Jet.OLEDB.4.0';
    ImportConnect.Properties[ 'Extended Properties' ].Value := 'Text';
    ImportConnect.Properties[ 'Data Source' ].Value := ExtractFilePath( FileName );
    ImportConnect.Properties[ 'USER ID' ].Value:= 'Admin';
    ImportConnect.Properties[ 'Jet OLEDBatabase Password' ].Value := DBPassword;

    SQL := Format( 'SELECT * INTO [VBStamm] IN "%s" from %s',
    [ AppConfig.DBName, // DB mit Verzeichnis
    ExtractFileName( FileName ) ] ); // Import-Textfile

    ImportConnect.Execute( SQL, Result );
    </PRE>

    Hier erhalte ich aber die Fehlermeldung: "Kein zulässiges Kennwort".

    Das übergebene Passwort habe ich im Debugger überprüft, es stimmt !!! Kann es damit zusammenhängen dass das Passwort ein string ist der nur aus Zahlen besteht oder habe ich etwas vergessen

    Ich bedanke mich für jeden Tip

    MfG Holger Rogge

  • #2
    Hallo,

    eine ACCESS-Datenbank unterscheidet zwischen dem <b><font color="#000080">
    Datenbankkennwort</font></b> (für das keine Arbeitsgruppen-Informationsdatei
    alias Systemdatenbank benötigt wird) und den <b><font color="#000080">
    Benutzer-Zugangsdaten</font></b>. Ein Datenbankkennwort wird zusammen mit der
    Datenbank, nicht mit der Arbeitsgruppen-Informationsdatei gespeichert.

    Der Eintrag <i>Jet OLEDBatabase Password</i> gilt nur für das Datenbankkennwort, aber nicht für die Benutzeranmeldung (Benutzername und Passwort). Diese Login-Daten werden in der Verbindungszeichenfolge übergeben (<b>User ID</b> und <b>Password</b>):
    <pre>
    Provider=Microsoft.Jet.OLEDB.4.0;
    Password=geheim;
    User ID=Datenbankbenutzer;
    Data Source=C:\Database\NATIVEADODB.mdb;Persist Security Info=True
    </pre&gt

    Comment


    • #3
      Hallo Andreas, <br>

      Danke erst mal für Ihre schnelle Antwort! <BR>

      Aber so funktioniert das leider nicht, da die Quelle eine Textdatei ist. Meine Vorgehensweise war natürlich Blödsinn...<BR>

      Das Passwort brauche ich natürlich für die Zieldatenbank ( AppConfig.DBName ) wobei die ImportConnection nicht aktiv ist. <BR>

      Die Erkenntnis bringt mich aber nicht wirklich weiter da ich nun keinen blassen Schimmer habe wie dann die Vorgehnsweise ist, die Properties habe ich ja für die Importdatei belegt...<BR>

      Würde mich sehr freuen wenn Sie auch da eine Lösung hätten.<BR>

      MfG Holger Rogg

      Comment


      • #4
        Hallo Holger,

        Andreas hat schon Recht. In Deinem Beispiel fehlen eigentlich nur noch 2 Einträge :

        ImportConnect.Properties[ 'Password' ].Value:= 'xxxx';

        und "Persist Security Info=True;"

        damit Access auch weiß, das eine Anmeldung erforderlich ist.

        Ohne diese Information kommt die Fehlermeldung zu recht .....

        regards Michae

        Comment


        • #5
          Hallo Michael,<BR>

          Danke für deine Antwort erst mal, aber da muss ich dich leider berichtigen, ich habe mich auch erst verwirren lassen soll heissen mein Code ist falsch.<BR>

          Die Properties der ImportConnection beziehen sich auf das zu importierende Textfile das natürlich nicht passwortgeschützt sein kann, die passwortgeschützte Ziel-Datenbank inklusive Pfad taucht erst im SQL-Statement auf ( AppConfig.DBName )...
          D.h. ich brauche die Properties "User ID" und "Password" der ImportConnection überhaupt nicht zu belegen.<BR>

          Das würde aber heissen ich müsste innerhalb des SQL-Statement auch die <User ID> und das <Passwort> übergeben, bezweifle aber dass das geht.<BR>

          MfG Holger Rogg

          Comment


          • #6
            Hallo Holger,

            da bin ich mir nicht so sicher.

            Denn eigentlich muß sich ja der User erst an der Datenbank anmelden, um dann den Import aus einer Textdatei per "SELECT ..." zu starten.

            Und genau diese meckert die Datenbank an ....

            Korrekterweise muß man sich erst an der Datenbank anmelden und dann den Import aus "XXX" zu starten.

            Grüße Michae

            Comment

            Working...
            X