Καλησπέρα Δημήτρη!
1) Δημιούργησε μια κενή φόρμα και αποθήκετσε την ως
HiddenForm (παραδειγματικό όνομα).
Kατόπιν δημιούργησε μια μακροεντολή (καρτέλα
Δημιουργία > Μακροεντολή) με το όνομα
AutoExec.
Η μακροεντολή αυτή, λόγω του ονόματος (
AutoExec) της θα εκτελείται αυτόματα κάθε φορά που ανοίγει η βάση σου.
Κατάτην επεξεργασία της μακροεντολής, φρόντισε να κάνεις τις ρυθμίσεις όπως φαίνεται στην εικόνα παρακάτω.
Με τη μέθοδο αυτή, η φόρμα
HiddenForm θα ανοίγει με την εκκίνηση της εφαρμογής, θα είναι κρυφή και θα κλείνει όταν κλείνει η εφαρμογή.
Κατόπιν στις ενεργοποίησε την καρτέλα
Συμβάντα στο φύλλο ιδιοτήτων της φόρμας.
Επέλεξε την επιλογή
"Με τη φόρτωση"
Επέλεξε "
[Διαδικασία συμβάντος]" και πάτησε το κουμπί μετά από το DropDown.
Θα εμφανιστεί το παράθυρο του
VBE με τον ακόλουθο κώδικα:
Private Sub Form_Load()
End Sub
Ανάμεσα σ αυτές τις 2 γραμμές πρόσθεσε αυτό: MsgBox "Welcome!"
έτσι θα έχεις:
Private Sub Form_Load()
MsgBox "Welcome!"
End Sub
Εξυπηρετεί μόνο και μόνο για να ξέρεις κατά την ανάπτυξη της εφαρμογής ότι μακροεντολή
AutoExec λειτούργησε κατά την έναρξη της εφαρμογής και η φόρμα έχει φορτωθεί.
Αργότερα μπορείς να διαγράψεις τις 3 αυτές γραμμές.
Κατόπιν από το φύλλο ιδιοτήτων επέλεξε την επιλογή
"Με τη αποφόρτωση".
Επέλεξε πάλι "
[Διαδικασία συμβάντος]" και πάτησε το κουμπί μετά από το DropDown.
Ο κέρσορας θα βρίσκεται ανάμεσα στις γραμμές:
Private Sub Form_Unload(Cancel As Integer)
End Sub
Αντικατέστησε τις με:
Κώδικας:
Private Sub Form_Unload(Cancel As Integer)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim BackupFolder As String
Dim SourcePath As String
Dim DestintionPath As String
StartHere:
BackupFolder = FolderBrowserDialog
If BackupFolder <> vbNullString Then
If Right(BackupFolder, 1) <> "\" Then BackupFolder = BackupFolder & "\"
SourcePath = CurrentProject.FullName
DestintionPath = BackupFolder & Right(SourcePath, InStr(1, StrReverse(SourcePath), "\") - 1)
If SourcePath <> DestintionPath Then
fso.CopyFile SourcePath, DestintionPath, True
Else
MsgBox "Δεν μπορείτε να αποθηκεύσετε αντίγραφο ασφαλείας στον φάκελο που βρίσκεται η εφαρμογή!" & vbLf & _
"Επιλέξτε άλλη διαδρομή ή δημιουργήστε νέο φάκελο.", vbExclamation
DestintionPath = vbNullString
BackupFolder = vbNullString
GoTo StartHere
End If
End If
MsgBox "Bye!"
End Sub Ο κώδικας αυτός, όπως υποδηλώνει και το όνομα του, τρέχει όταν αποφορτώνεται η φόρμα
και εμφανίζει ένα διάλογο επιλογής του φακέλου που θα φιλοξενήσει το αντίγραφο ασφαλείας.
Αν ο χρήστης δεν επιθυμεί αντίγραφο ασφαλείας μπορεί να πατήσει το πλήκτρο
ESC ή το κουμπί του διαλόγου "Άκυρο" και να παρακάμψει το διάλογο και να κλείσει την εφαρμογή
Στην κορυφή της σελίδας του
VBE κάτω από την πρώτη γραμμη ("Option Compare Database")
πρόσθεσε την παρακάτω συνάρτηση:
Κώδικας:
Option Explicit
Private Const MyPC = 17&
Private Const ShOptions = 65&
Public Function FolderBrowserDialog() As String
Dim oShell As Object
Dim oFolder As Object
Set oShell = CreateObject("Shell.Application")
Set oFolder = oShell.BrowseForFolder( _
hWndAccessApp, "Επιλέξτε φάκελο για να δημιουργήσετε αντίγραφο ασφαλείας." & vbLf & _
"αυτής της εφαρμογής και πατήστε 'ΟΚ'." & vbLf & _
"Πατήστε 'Ακυρο'για να κλείσετε την εφαρμογή χωρίς αντίγραφο ασφαλείας." _
& vbLf, ShOptions, MyPC)
If Not oFolder Is Nothing Then
FolderBrowserDialog = oFolder.Self.Path
End If
Set oFolder = Nothing
Set oShell = Nothing
End Function
Αποθήκευσε, κάνε επανεκκίνηση στην εφαρμογή σου και δοκίμασε.
Φιλικά
Τάσος