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.
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/ (http://officewissen.net/access-datenbank-mit-bordmitteln-wirksam-schutzen/)
oder auch diesen:
http://www.vbarchiv.net/tipps/tipp_455-datenbanken-und-passwoerter-dao.html (http://www.vbarchiv.net/tipps/tipp_455-datenbanken-und-passwoerter-dao.html)
HTH
Peter
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.
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
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
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?
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
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
Habe ich wohl überlesen, sorry.