Pulsante di comando visibile in base a utente

di il
9 risposte

Pulsante di comando visibile in base a utente

Buongiorno,

mi riferisco ad una discussione di cui vi metto il link:
https://www.iprogrammatori.it/forum-programmazione/access/gestione-utenti-t24876.html

Vorrei riuscire a trovare il modo di risolvere il seguente dilemma:
Uso Office 365

Ho impostato una maschera login; a seconda del nome dell'utente il database si apre su un form differente.
Ho impostato i parametri consenti aggiunte/modiche/eliminazioni su No, in ogni singola maschera.
Ora per rendere utilizzabile il database ho aggiunto un pulsante di comando "abilita modifica" sulle maschere in cui andrebbero inseriti i dati.

Premessa: ho comunque impostato:
If SicurezzaLivello <> 1 Then
Me.AllowEdits = False {qui}

DILEMMA: vorrei rendere il pulsante "abilita modifica" visibile (utilizzabile) solamente se il livello di sicurezza dell'user è = 1; o meglio renderlo invisibile se il livello di sicurezza è diverso da 1.

Ho fatto qualche prova ma non ne vengo fuori.
Le varie strategie utilizzate in vari esempi da cui mi sono documentato mi hanno dato uno spunto, sono abbastanza convinto di essere vicino all'obiettivo, ma sono sicuro che mi manca un qualcosa di fondamentale per riuscirci.

Vi scrivo di seguito il codice VBA (la parte interessata) che sto provando a costruire per raggiungere l'obiettivo, conscio del fatto che sia non funzionante.
[...]
If Me.Testo6.Value = DLookup("Password", "AccessoUtenti", "IDutente=" & Me.CasellaCombinata8.Value) Then
IDutente = Me.CasellaCombinata8.Value
If IDutente = "1" Then DoCmd.OpenForm "Form1" 'Utente1
If IDutente = "2" Then DoCmd.OpenForm "Form2" 'Utente2
If IDutente = "3" Then DoCmd.OpenForm "Form3" 'Utente3
If IDutente = "4" Then DoCmd.OpenForm "Form4 'Utente4
If IDutente = "5" Then DoCmd.OpenForm "Form5" 'Utente5
If IDutente = "6" Then DoCmd.OpenForm "Form6" 'Utente6
Exit Sub
End If
If Me.SicurezzaLivello.Value = DLookup("SicurezzaLivello", "AccessoUtenti", "IDutente=" & Me.CasellaCombinata8.Value) Then
SicurezzaLivello = Me.CasellaCombinata8.Value
If SicurezzaLivello <> 1 Then        '{qui}
Me.AllowEdits = False
Forms![NomeForm1, NomeForm2, ecc..]!Comando43.Visible = False <--- Il pulsante si trova su altre 3-4 maschere.
[...]


Vorrei agire sul VBA del pulsante Login piuttosto che su ogni singola maschera sul pulsante "abilita modifica".

Vi chiedo se gentilmente mi aiutate a completare l'impostazione visibile/invisibile del Comando se il livello di sicurezza
diverso da 1.

Grazie mille
Buona serata

9 Risposte

  • Re: Pulsante di comando visibile in base a utente

    Quelloc he fai è poco funzionale... o meglio non va bene.
    Le variabili AMBIENTE devono essere accessibili da tutto il Progetto, ed ogni componente deve o dovrebbe essere AUTONOMO.
    Tu invece vorresti fare il contrario, ovvero condizionare le Maschere dalla Form(Login)... è quanto di più errato si possa fare.
    TI sembrerà possa funzionare finchè hai 3 maschere in tutto, ma se inizi ad avere un SW più ampio, la scelta è fallimentare.
    Devi ragionare in modo differente, anche perchè il codice che scrivi ha molti punti da rivedere, come sintassi ma soprattutto come logica di sviluppo.

    Il Demo infatti che è suggerito in quella discussione, ancorchè sia probabilmente troppo elaborato per utenti non formati, punta proprio su Variabili Publiche accessibili dal singolo Oggetto che ne deve essere condizionato.

    Ovviamente vedi tu...
  • Re: Pulsante di comando visibile in base a utente

    Salve Alex, mi sto studiando la sua Demo, non trovo il modo di cambiare le password inseritevi di default; ovvero la admin user e manager
  • Re: Pulsante di comando visibile in base a utente

    La maschera [Gestione]... cosa fa secondo te...?
  • Re: Pulsante di comando visibile in base a utente

    Risolto grazie.
  • Re: Pulsante di comando visibile in base a utente

    Buonasera @Alex,
    Dopo essermi avventurato nella tua demo ho realizzato che era talmente azzeccata che ho pensato di usarla come start per il mio database.

    Dopo aver predisposto il database mi trovo con un problema che non riesco a risolvere; i permessi che imposto non vengono rispettati.
    Se ho impostato che "user" non puo nè modificare nè aggiungere o eliminare in [Form1], questo poi non accade, ma rimane modificabile o non modificabile a seconda che le proprietà della maschera in merito alle voci immissione/modifiche/eliminazioni/aggiunte siano abilitate o disabilitate.

    Non capisco dove ho commesso l'errore fatale, di per sè ho aggiunto vari elementi (maschere e tabelle) e impostato i vari permessi
    il VBA della maschera Login e del modulo dbGlobal sono rimasti invariati.

    Qualche suggerimento?
  • Re: Pulsante di comando visibile in base a utente

    La maschera che apri deve essere processata... hai guardato BENE di inserire nelle Form da gestire il codice:
    Private Sub Form_Open(Cancel As Integer)
        If getAllowOpen(Me.Name) = False Then Cancel = True
    End Sub
    
    Private Sub Form_Load()
        ' --------------------------------------------------
        ' Questo è il SOLO CODICE che serve applicare
        ' i settaggi dei privilegi alla MASCHERA
        ' --------------------------------------------------
        Call SetPermissionProperties(Me)
    End Sub
    
  • Re: Pulsante di comando visibile in base a utente

    Risolto. Grazie mille.

  • Re: Pulsante di comando visibile in base a utente

    Buonasera @Alex,
    Spero di non andare oltremodo OT; mi è sorto un dubbio
    Risulterebbe possibile utilizzare un database, che come start segue quel modello, su due computer contemporaneamente?
    Se si, mi daresti un consiglio su come si potrebbe procedere?
  • Re: Pulsante di comando visibile in base a utente

    Domanda non completa.
    Il database sarebbe lo stesso per entrambi... ovvero stai ragionando in logica client-server...?
    Se la risposta è SÌ ovviamente non cambierebbe nulla.

    Conosci la.logica di strutturazione client-server...?
    Prova a cercare qualche cosa in merito ed a come devi strutturare le LinkedTable...
Devi accedere o registrarti per scrivere nel forum
9 risposte