Attivare i contenuti con una macro Autoexec

di il
7 risposte

Attivare i contenuti con una macro Autoexec

Saluto tutti,
Il mio db è gestito da una maschera che si chiama "Menu Principale", la quale contiene tutti i comandi per gestirlo.
All'apertura del db vorrei inserire una password.
Per questo motivo ho realizzato la Maschera MyPassword ( Popup , Scelta obbligata) che oltre a consentire l'immissione della Password, contiene un pulsante codificato, per l'apertura del "Menu Principale".
Il problema è il seguente:
Se inserisco la Maschera "MyPasswor in una macro autoexec, si apre la maschera, mi fa immettere la
password, ma non si attiva perché i contenuti del db non sono attivati.
Quesito Come posso attivare i contenuti con la stessa macro autoexec ?? Prima di aprire la Maschera MyPassword ??
I contenuti del mio db si disattivano ogni volta che chiudo il db stesso.
Esiste un sistema per mantenerli attivati ??
Grazie per la risposta

7 Risposte

  • Re: Attivare i contenuti con una macro Autoexec

    Non capisco cosa significa "attivare" o "disattivare" i contenuti del database. Ad ogni modo, evidentemente ti conviene farlo prima dell'apertura maschera MyPassword.
  • Re: Attivare i contenuti con una macro Autoexec

    Potresti creare un percorso attendibile (opzioni di access) per la cartella dove utilizzi il DB (mi raccomando non farlo nel desktop) oppure potresti cercare in questo forum o in masterdrive o in rete il modo di impostare tramite codice VBA tali "percorsi attendibile" meglio conosciuti anche con il nome di "trusted location".

    Nel caso tu propenda per la seconda ipotesi sappi che dovrai avvalerti di un DB esterno che faccia da Login e che ti crei la "trusted location" dinamicamente qualora non esista...

    saluti.
  • Re: Attivare i contenuti con una macro Autoexec

    Non per nulla, ma sia osvaldo che angelo, fate parte dei miei amici.
    In acces 2007 quando si apre il db compare una barra "AVVISO DI PROTEZIONE" con a lato Opzioni da dove si puo' proteggere il contenuto o attivarlo.
    Angelo, io ho già provato, ma nelle opzioni di access, (database corrente) non riesco a trovare una opzione che mi consenta di tenere i contenuti attivati.
    la schermata che mi compare e sull'allegato
    Nel caso del pulsante su password mi avevi già suggerito questa cosa, ma io non sono riuscito a farlo, e attivo i contenuti ogni volta che apro il db.
    ma in questo caso, la maschera MyPassvord non entra in funzione se non ho attivato i contenuti, e se ho lanciato la maschera con l'autoexec, non posso attivare i contenuti.
    Come devo fare, con quale comando nella macro autoexec posso attivare i contenuti prima di lanciare la maschera ??
    Grazie per le risposte amici miei
  • Re: Attivare i contenuti con una macro Autoexec

    Angelo, io ho già provato, ma nelle opzioni di access, (database corrente) non riesco a trovare una opzione che mi consenta di tenere i contenuti attivati.
    Dalle opzioni di access, scegli "centro di protezione"(nell'elenco di voci a sinistra).
    A destra della schermata c'è un pulsante che si chiama "impostazioni centro protezione".
    premilo e poi vai su "percorsi attendibili" e clicca a destra su "Aggiungi nuovo percorso..."

    ciao
  • Re: Attivare i contenuti con una macro Autoexec

    Vedi se questo può essere quello che chiedi
    
    '*********************************************************************
    ' NON MODIFICARE IL NOME DELLA MACRO AUTOEXEC
    '*********************************************************************
    
    'Questo modulo consente di applicare una sorta di Protezione e/o
    'impostazione di AVVIO in modo Automatico
    'Si può utilizzare lanciandola da un Menù sotto Password
    'oppure inserendo un controllo nascosto in una Form.
    
    'Consente di Modificare in un solo colpo tutte le proprietà
    'del menù di AVVIO compreso ALLOW_BYPASS_KEY ed eventualmente
    'la Macro AUTOEXEC.
    
    'Startup properties
    Private Const strAppTitle As String = "TITOLO APPLICAZIONE"
    Private Const strStartUpForm As String = "PANNELLO PRINCIPALE"
    Private Const strStartUpMenuBar As String = "mnuPrincipale"
    Private Const strStartUpShortcutMenuBar As String = vbNullString
    Private Const strAppIcon As String = vbNullString
    Private Const blnStartUpShowDBWindow As Boolean = False
    Private Const blnStartUpShowStatusBar As Boolean = False
    Private Const blnAllowShortcutMenus As Boolean = False
    Private Const blnAllowFullMenus As Boolean = False
    Private Const blnAllowBuiltInToolbars As Boolean = False
    Private Const blnAllowToolbarChanges As Boolean = False
    Private Const blnAllowBreakIntoCode As Boolean = False
    Private Const blnAllowSpecialKeys As Boolean = False
    Private Const blnAllowBypassKey As Boolean = False
    
    Public Function Secure()
        On Error Resume Next
        Call ChangeProperty("AppTitle", dbText, strAppTitle)
        Call ChangeProperty("StartUpForm", dbText, strStartUpForm)
        Call ChangeProperty("StartUpMenuBar", dbText, strStartUpMenuBar)
        Call ChangeProperty("StartupShortcutMenuBar", dbText, strStartUpShortcutMenuBar)
        Call ChangeProperty("AppIcon", dbText, strAppIcon)
        Call ChangeProperty("StartUpShowDBWindow", dbBoolean, blnStartUpShowDBWindow)
        Call ChangeProperty("StartUpShowStatusBar", dbBoolean, blnStartUpShowStatusBar)
        Call ChangeProperty("AllowShortcutMenus", dbBoolean, blnAllowShortcutMenus)
        Call ChangeProperty("AllowFullMenus", dbBoolean, blnAllowFullMenus)
        Call ChangeProperty("AllowBuiltInToolbars", dbBoolean, blnAllowBuiltInToolbars)
        Call ChangeProperty("AllowToolbarChanges", dbBoolean, blnAllowToolbarChanges)
        Call ChangeProperty("AllowBreakIntoCode", dbBoolean, blnAllowBreakIntoCode)
        Call ChangeProperty("AllowSpecialKeys", dbBoolean, blnAllowSpecialKeys)
        Call ChangeProperty("AllowBypassKey", dbBoolean, blnAllowBypassKey)
        If CurrentDb.Containers("Scripts").Documents("$Autoexec").Name = "$Autoexec" Then _
        EnableAutoExec
    End Function
    
    Public Function UnSecure()
        Call ChangeProperty("AppTitle", dbText, "My Application is UnSecured")
        Call ChangeProperty("StartUpForm", dbText, vbNullString)
        Call ChangeProperty("StartUpMenuBar", dbText, vbNullString)
        Call ChangeProperty("StartupShortcutMenuBar", dbText, vbNullString)
        Call ChangeProperty("AppIcon", dbText, vbNullString)
        Call ChangeProperty("StartUpShowDBWindow", dbBoolean, True)
        Call ChangeProperty("StartUpShowStatusBar", dbBoolean, True)
        Call ChangeProperty("AllowShortcutMenus", dbBoolean, True)
        Call ChangeProperty("AllowFullMenus", dbBoolean, True)
        Call ChangeProperty("AllowBuiltInToolbars", dbBoolean, True)
        Call ChangeProperty("AllowToolbarChanges", dbBoolean, True)
        Call ChangeProperty("AllowBreakIntoCode", dbBoolean, True)
        Call ChangeProperty("AllowSpecialKeys", dbBoolean, True)
        Call ChangeProperty("AllowBypassKey", dbBoolean, True)
        If CurrentDb.Containers("Scripts").Documents("Autoexec").Name = "Autoexec" Then _
        DisableAutoExec
    End Function
    
    
    Private Function ChangeProperty(strPropName As String, _
                varPropType As Variant, _
                varPropValue As Variant) As Boolean
        Dim prp As Property
        On Error GoTo Change_Err
        If Len(varPropValue) > 0 Then
            CurrentDb.Properties(strPropName) = varPropValue
        Else
            CurrentDb.Properties.Delete strPropName
        End If
        ChangeProperty = True
        Change_Bye:
        Set prp = Nothing
        Exit Function
        Change_Err:
        Select Case Err
            Case 3265 'Item not found in this collection.
                'Do Nothing
                Resume Next
            Case 3270 'prop not found
                With CurrentDb
                    Set prp = .CreateProperty(strPropName, varPropType, varPropValue)
                    .Properties.Append prp
                End With
                Resume Next
            Case Else
                'unknown error
                ChangeProperty = False
                Resume Change_Bye
        End Select
    End Function
    
    
    Private Function DisableAutoExec() As Boolean
        Dim docCiclo As DAO.Document
        Dim dbs As DAO.Database
        Set dbs = CurrentDb
        DisableAutoExec = False
        For Each docCiclo In dbs.Containers!Scripts.Documents
             'Scorre l'insieme Documents del database per verificare la presenza della Macro
            ' se esiste la Rinomina
            If docCiclo.Name = "Autoexec" Then 
                 DoCmd.Rename "_Autoexec", acMacro, "Autoexec" 
                 DisableAutoExec = True
            End If
        Next docCiclo
        Set dbs = Nothing
    End Function
    
    Private Function EnableAutoExec() As Boolean
        Dim docCiclo As DAO.Document
        Dim dbs As DAO.Database
        Set dbs = CurrentDb
        EnableAutoExec = False
        For Each docCiclo In dbs.Containers!Scripts.Documents 
            'Scorre l'insieme Documents del database per verificare la presenza della Macro
            ' se esiste la Rinomina
            If docCiclo.Name = "_Autoexec" Then 
                DoCmd.Rename "Autoexec", acMacro, "_Autoexec" 
                EnableAutoExec = True
            End If
        Next docCiclo
        Set dbs = Nothing
    End Function
  • Re: Attivare i contenuti con una macro Autoexec

    OK Angelo funziona perfettamente. Grazie
    Alex nonostante la mia non eccezionale competenza su access, non voglio perdermi la possibilità di questa ulteriore conoscenza, pertanto ti chiedo:

    @Alex ha scritto:


    'Si può utilizzare lanciandola da un Menù sotto Password
    Io se prima non ho attivato i contenuti dalla barra "Avviso protezione"- opzioni - Attiva i contenuti, non riesco a fare funzionare la maschera MyPassword che mi apre il "Menu Principale".
    Dove dovrei inserire il modulo che tu mi hai suggerito ?
    Grazie
  • Re: Attivare i contenuti con una macro Autoexec

    Si in diversi miei DEMO è implementata proprio con un Menù(CommandBar quindi A<2007 ma è semplice modificarlo per i Ribbon) che chiama le 2 Funzioni per ATTIVARE o DISATTIVARE.

    Se vuoi vedere un'esempio lo puoi trovare quì:

    Scarica il FILE e rinominalo con ESTENSIONE ZIP, è un MIRROR e sono Link Statici.

    A quel punto aprilo ed apri il File del ricettario(lascia ovviamente stare il Demo ma guarda solo la parte di PROTEZIONE).
    Nel menù hai una voce proprio dedicata alla protezione, si apre una mascherina che chiede la PWD ed attiva il tutto...(la PWD=sitocomune)

    Siccome sono Proprietà del Database, vengono Modificate RUNTIME ma diventano attive solo alla successiva riapertura dell'applicativo.
Devi accedere o registrarti per scrivere nel forum
7 risposte