TKSoft-Online

Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

Archivieren mit Sicherheit
(1 Leser) (1) Gast
Alles rund um MS-Access
  • Seite:
  • 1

THEMA: Archivieren mit Sicherheit

Archivieren mit Sicherheit 2 Jahre, 11 Monate her #539

  • Adolf
Hallo Accessler,

soll in eine Datenbank eine möglichst sichere Archivierung über Button einbauen.
Bisher wurde eine Anfügeabfrage und danach eine Löschabfrage von Hand ausgeführt.

Wie kann ich die über einen Button mit VBA zusammen ausführen und das Ergebnis der Anfügeabfrage vor der Löschabfrage kontrollieren.
Die Datensätze sollen also möglichst sicher aus einer Tabelle in eine Archiv-Tabelle verschoben werden.

Freue mich über einen kurzen möglichst sicheren Code.

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #540

  • TommyK
  • OFFLINE
  • Administrator
  • Beiträge: 502
  • Karma: 4
Hallo Adolf,

Du kannst natürlichj auch beide Abfragen hintereinander in VBA ausführen lassen.
Dafür gibt es verschiedene Wege:
z.B.:
 
Private Sub Befehl0_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery \"DeineAnfügeabfrage\"
DoCmd.OpenQuery \"DeineLöschabfrage\"
DoCmd.SetWarnings True
End Sub
 

oder als SQL-String
 
Private Sub Befehl0_Click()
DoCmd.RunSQL \"INSERT INTO tbl_Files.....\"
DoCmd.RunSQL \"DELETE ......\"
End Sub
 

auch als SQL-String
 
Private Sub Befehl0_Click()
CurrentDb.Execute \"INSERT INTO tbl_Files.....\"
CurrentDb.Execute \"DELETE ......\"
End Sub
 

Wie kann ich die über einen Button mit VBA zusammen ausführen und das Ergebnis der Anfügeabfrage vor der Löschabfrage kontrollieren.
Freue mich über einen kurzen möglichst sicheren Code.

Hier wäre es nicht mit einem kurzen Code getan.
Dazu bräuchte man auch mehr Infos
Gruß TommyK

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #541

  • Adolf
Hallo TommyK,

n mal für die Codes.

Welche Infos bräuchte man?
Bei der Anfügeabfrage wird nach einem ja/nein-Feld gefiltert.
Bei der Löschabfrage genau die selbe Abfrage genutzt.
Also prinzipiell geht es darum einen ganzen Datensatz SICHER aus Tabelle \"tblDaten\" in Tabelle \"tblDatenArchiv\" zu verschieben wenn das ja/nein-Feld deaktiviert ist (Feld: aktuell; Kriterien: nein).

Danke im voraus.

Gruß
Adolf

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #542

  • TommyK
  • OFFLINE
  • Administrator
  • Beiträge: 502
  • Karma: 4
Hallo Adolf,

also im Prinzip sind Anfüge- bzw. Löschabfragen schon eine sichere Sache.
In einem Programm von mir laufen solche Sachen seit Jahren problemlos.
Dort werden aller 6 Monate Tausende Datensätze mit dieser Methode archviert.
Deshalb denke ich das man auf eine zusätzliche Verifizierung verzichten kann.
Wichtig wäre das zum Zeitpunkt der Archivierung mit der DB nichts anderes gemacht wird bzw.
andere User damit arbeiten.
Sollte doch mal etwas schief gehen da nimmt man sein Backup (oder legst Du etwa keines an? )
Gruß TommyK

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #543

  • Adolf
Hallo TommyK,

herzlichen Dank erst mal für die Codes (sollte es vorher heissen).

Hab es JETZT so:
 
Private Sub Archivieren_Click()
On Error GoTo Err_Archivieren_Click
 
DoCmd.SetWarnings False
DoCmd.OpenQuery \"Daten_archivieren\", acNormal, acEdit
DoCmd.OpenQuery \"Archivierte_Daten_löschen\", acNormal, acEdit
DoCmd.SetWarnings True
 
Exit_Archivieren_Click:
Exit Sub
 
Err_Archivieren_Click:
MsgBox Err.Description
Resume Exit_Archivieren_Click
 
End Sub
 


Wie kann ich das jetzt noch SICHERN?
Ich weiss, eine 100%ige Sicherheit gibt es nicht.

Danke im Voraus.

Gruß
Adolf

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #544

  • TommyK
  • OFFLINE
  • Administrator
  • Beiträge: 502
  • Karma: 4
Hallo Adolf,

Wie kann ich das jetzt noch SICHERN?
Ich weiss, eine 100%ige Sicherheit gibt es nicht.

Vor der Archvierung ein Backup machen!
Gruß TommyK

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #546

  • Adolf
Hallo TommyK,

wie kann ich in VBA für das Backup (der BackEnd-Datei) den Pfad mit Laufwerksangabe aus dem Tabellenverknüpfungs-Manager auslesen und direkt vor der Archivierung ausführen?

Der restliche Code (siehe oben) funktioniert einwandfrei.

Herzlichen Dank für die Hilfe.

Gruß
Adolf

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #548

  • TommyK
  • OFFLINE
  • Administrator
  • Beiträge: 502
  • Karma: 4
Hallo Adolf,

hier der Code zum Auslesen des BE-Pfades
 
Dim sConnect As String
Dim i As Integer
sConnect = CurrentDb.TableDefs(\"Eine Tabelle\"«»).Connect
i = InStr(1, sConnect, \"=\"«»)
sConnect = Mid(sConnect, i + 1)
 

Bei \"Eine Tabelle\") übergibst Du nur einen Tabellennamen Deines BE's
Gruß TommyK

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #552

  • Adolf
Hallo TommyK,

der folgende Code archiviert das Backend im Unterverzeichnis \"Backups\" des original Dateipfades der original Backend-Datei mit dem Datumszusatz.
Bei einer zweiten Archivierung am selben Tag wird die Datei NICHT noch einmal gespeichert und auch die Archivierung NICHT mehr durchgeführt. Liegt das an der \"If Dir(Zieldatei)\"-Schleife?

 
'=======================================================================
'
= Backup erstellen und nicht \"aktuell\"e Daten archivieren und löschen =
'=======================================================================
 
Private Sub Archivieren_Click()
On Error GoTo Err_Archivieren_Click
 
'
Backup erstellen im Unterpfad \"\Backups\\" mit Speicherdatum
Dim sConnect As String, Zieldatei As String, oFSO As Variant
Dim l As Integer
sConnect = CurrentDb.TableDefs(\"[color=#FF0000]Deine_Tabelle[/color]\"«»).Connect
l = InStr(1, sConnect, \"=\"«»)
sConnect = Mid(sConnect, l + 1)
 
Zieldatei = Left(sConnect, Len(sConnect) - [color=#008000]10[/color]) & \"Backups\\" & \"[color=#825900]Deine_Datenbank[/color]_\" & _
Year(Now) & \"_\" & Month(Now) & \"_\" & Day(Now) & \".mdb\"
 
If Dir(Zieldatei) = \"\" Then
Set oFSO = CreateObject(\"Scripting.FileSystemObject\"«»)
oFSO.CopyFile sConnect, Zieldatei, True
'SetAttr Zieldatei, vbReadOnly
MsgBox \"Es wurde eine Sicherheitskopie unter \" & _
Zieldatei & \" erstellt\"
End If
 
'
Nicht \"aktuell\"e Daten archivieren und löschen
DoCmd.SetWarnings False
DoCmd.OpenQuery \"Daten_archivieren\", acNormal, acEdit
DoCmd.OpenQuery \"Archivierte_Daten_löschen\", acNormal, acEdit
DoCmd.SetWarnings True
 
Exit_Archivieren_Click:
Exit Sub
 
Err_Archivieren_Click:
MsgBox Err.Description
Resume Exit_Archivieren_Click
 
End Sub
 


Deine_Tabelle = eine verlinkte Tabelle
10 = Anzahl der Buchstaben von Dateiname plus \".\" plus Endung
Deine_Datenbank = Name der original Datenbank (ohne \".\" und Endung)

Herzlichen Dank für die Hilfe.

Gruß
Adolf

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #553

  • TommyK
  • OFFLINE
  • Administrator
  • Beiträge: 502
  • Karma: 4
Hallo Adolf,

Liegt das an der \"If Dir(Zieldatei)\"-Schleife?

Ja, damit wird ja geprüft ob Datei schon vorhanden.
Wenn ja, passiert nichts.
Gruß TommyK

Re:Archivieren mit Sicherheit 2 Jahre, 11 Monate her #556

  • Adolf
Hallo TommyK,

herzlichen Dank für die Hilfe.
Es funktioniert jetzt bestens.

Gruß
Adolf
  • Seite:
  • 1
Moderatoren: TommyK
Ladezeit der Seite: 8.56 Sekunden

Login

Latest Comments

Latest Forum Posts

Mehr »

Download Statistik

41 Kategorien
187 Dateien
173444 Downloads

JoomlaWatch 1.2.11 - Joomla Monitor and Live Stats by Matej Koval