Θέμα: Active X Controls Access Backup

Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 31-08-11, 16:50
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλησπέρα Δημήτρη!
1) Δημιούργησε μια κενή φόρμα και αποθήκετσε την ως HiddenForm (παραδειγματικό όνομα).

Kατόπιν δημιούργησε μια μακροεντολή (καρτέλα Δημιουργία > Μακροεντολή) με το όνομα AutoExec.

Η μακροεντολή αυτή, λόγω του ονόματος (AutoExec) της θα εκτελείται αυτόματα κάθε φορά που ανοίγει η βάση σου.

Κατάτην επεξεργασία της μακροεντολής, φρόντισε να κάνεις τις ρυθμίσεις όπως φαίνεται στην εικόνα παρακάτω.

Access Backup-macroedit.png

Με τη μέθοδο αυτή, η φόρμα 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
Αποθήκευσε, κάνε επανεκκίνηση στην εφαρμογή σου και δοκίμασε.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 31-08-11 στις 17:21.
Απάντηση με παράθεση