Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Gesamte Datenbank Sicherheitskopieren mit Schreibschutz

Begonnen von OPS, Oktober 04, 2010, 10:48:33

⏪ vorheriges - nächstes ⏩

OPS

Hallo

Ich möchte die gesamte Datenbank per Knopfdruck sichern (wie die Funktion unter Datei->Datenbank sichern).
Dabei geht es aber tatsächlich um eine Kopie des Zwischenstandes der für Traceability sorgt.
Ich möchte eine Funktion der die Datenbank unter dem aktuellen Datum sichert und diese Datei dann anschließend schreibschützt.

Ich habe im Forum schon ein paar Möglichkeiten der Sicherung gesehen, aber ich weiß nicht wie ich die DB anschließend schreibschütze.

database

#1
Hallo,
neben der Möglichkeit die abgekoppelte (kopierte) DB in ein, durch NTFS - Berechtigungen vor ungewollten Zugriffen geschütztes Verzeichnis zu legen,
bietet sich die Möglichkeit der Verschlüsselung mit Passwort an.

Siehe hierzu diesen Beitrag und den Beispielcode auf der gleichen Seite.

http://officewissen.net/access-datenbank-mit-bordmitteln-wirksam-schutzen/

oder auch diesen:
http://www.vbarchiv.net/tipps/tipp_455-datenbanken-und-passwoerter-dao.html

HTH

Peter

OPS

Danke

Das ist für mich in einem anderen Zusammenhang nützlich, nicht aber in dem den ich meine.

Die Datenbank darf und soll weiterhin frei zugrifflich sein. Nur soll sie schreibgeschützt sein.
Jeder soll sie sich ansehen dürfen. Ich möchte quasi "nur lesen" für die Datei setzen.

Wenn ich sie durch ein Passwort sichere, kann sie nur jemand mit dem Passwort öffnen (aber sie soll frei zugänglich sein), und wenn sie dann durch das Passwort geöffnet ist, kann der Öffner in der DB Veränderungen vornehmen.

Aber es soll andersherum sein: Jeder soll die Kopie öffnen dürfen, aber niemand daran Änderungen vornehmen können.

bahasu

N'abend,

vielleicht hilft:
http://www.access-o-mania.de/forum/index.php?topic=8416.msg45370;topicseen#msg45370
oder
http://www.office-loesung.de/ftopic38239_0_0_asc.php

Denkbar sind auch Lösungen wie zum Beispiel bei DonKarl im Kapitel "Frontend komprimieren" beschrieben. Setzt dann aber wohl voraus, dass a2003 und nicht a2007 eingesetzt wird.

Harald
Servus

database

Hallo,

ZitatJeder soll sie sich ansehen dürfen. Ich möchte quasi "nur lesen" für die Datei setzen.

Naja, dann NTFS-Berechtigungen auf das Verzeichnis setzen und Ändern rausnehmen.
Somit kann jeder die DB öffnen, aber keine änderungen daran vornehmen. Das betrifft auch das Schreiben von Daten.

Peter

OPS

Ich habe nochmal im Forum gesucht und dieses Post gefunden:

http://www.access-o-mania.de/forum/index.php?topic=8416.0

Das ist was ich wollte und es funktioniert.
Dennoch danke für eure Hilfe!

Hier ist trotzdem noch etwas das interessant wäre:
ZitatPublic Function DB_Sicher()
    Dim Quelldatei As String, Zieldatei As String, oFSO As Variant
    Dim y As String, z As String

    Quelldatei = CurrentProject.FullName
    y = CurrentProject.Path
    z = CurrentProject.Name
    Zieldatei = y & "\backups\" & Left(z, Len(z) - 4) & "_" & _
                Year(Now) & "_" & Month(Now) & "_" & Day(Now) & ".accdb"
    If Dir(Zieldatei) = "" Then
        Set oFSO = CreateObject("Scripting.FileSystemObject")
        oFSO.CopyFile Quelldatei, Zieldatei, True
        'SetAttr Zieldatei, vbReadOnly
        MsgBox "Es wurde eine Sicherheitskopie unter " & _
               Zieldatei & " erstellt"
    End If
End Function

Wenn das Verzeichnis "Backups" nicht vorhanden ist, bricht er mit einer Fehlermeldung ab.

Ich bin immer noch nicht gut genug in VBA.
Wie müsste eine Zeile aussehen die sagt:

"
Wenn Verzeichnis Backup nicht vorhanden
Erstelle es
"

Weiß das jemand?

database

#6
Grüß dich,


Public Sub DBSichern()

   Dim Quelldatei As String, Zieldatei As String, oFSO As Variant
   Dim y As String, z As String
   Quelldatei = CurrentProject.FullName
   y = CurrentProject.Path
   z = CurrentProject.Name


   If Dir(y & "\backups\") = "" Then
       If MsgBox("Der Ordner 'backups' existiert nicht!" & vbCrLf & _
               "Soll der Ordner nun erstellt werden?", vbYesNo + vbDefaultButton1, "Sicherungsverzeichnis") = vbYes Then
           MkDir (y & "\backups\")

           Zieldatei = y & "\backups\" & Left(z, Len(z) - 4) & "_" & _
               Year(Now) & "_" & Month(Now) & "_" & Day(Now) & ".accdb"
           If Dir(Zieldatei) = "" Then
               Set oFSO = CreateObject("Scripting.FileSystemObject")
               oFSO.CopyFile Quelldatei, Zieldatei, True
               'SetAttr Zieldatei, vbReadOnly
               MsgBox "Es wurde eine Sicherheitskopie unter " & _
              Zieldatei & " erstellt"
           End If

       Else
           MsgBox "Die Sicherung kann nicht angelegt werden, " & vbCrLf & _
           "da die notwendige Verzeichnisstruktur nicht zur Verfügung steht!", vbCritical, "Sicherung"
           Exit Sub
      End If

   Else
       Zieldatei = y & "\backups\" & Left(z, Len(z) - 4) & "_" & _
               Year(Now) & "_" & Month(Now) & "_" & Day(Now) & ".accdb"
       If Dir(Zieldatei) = "" Then
           Set oFSO = CreateObject("Scripting.FileSystemObject")
           oFSO.CopyFile Quelldatei, Zieldatei, True
           'SetAttr Zieldatei, vbReadOnly
           MsgBox "Es wurde eine Sicherheitskopie unter " & _
              Zieldatei & " erstellt"
       End If
   End If
End Sub


...sollte deinen Vorstellungen entsprechend nachfragen und auf Wunsch den Ordner 'backups' erstellen.
Wobei der Code fürs Anlegen der Sicherung in eine eigene Sub ausgelagert werden könnte um den Erstellungsteil nicht 2-malig in der Sub zu haben.

Functions nur dann einsetzen, wenn sie auch einen Rückgabewert besitzen, ansonsten Subs deklarieren!  ;)

HTH
Peter

bahasu

Zitat von: OPS am Oktober 05, 2010, 10:35:55
Ich habe nochmal im Forum gesucht und dieses Post gefunden:

http://www.access-o-mania.de/forum/index.php?topic=8416.0

Das ist was ich wollte und es funktioniert.
Dennoch danke für eure Hilfe!

Ich hoffe, Du hast nicht zuviel Zeit mit Suchen verbraucht.

Diesen Link hatte ich bereits einen Tag zuvor angegeben.
Insofern verstehe ich Dein "Dennoch ..." nicht.

Harald
Servus

OPS