Visualizzazione dei risultati da 1 a 5 su 5

Discussione: maschere alternative

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    2

    maschere alternative

    Salve,
    avrei bisogno che qualcuno mi mostrasse/spiegasse un codice da inserire in vba access il quale aprisse in alternativa una di due maschere
    in base al current user.

    in sintesi
    in un file (es pippo.mdb) costruito secondo un sistema gerarchico (secondo cui ad ec
    tizio puo inserire i dati e caio puo solo aggiornarli -ma non inserirne di di nuovi): ci sono due maschere:
    -la maschera la maschera a), prevista per l'inserimento dati, a cui puo accedere solo tizio (ho infatti previsto il sistema
    di protezione in base ad utente );
    - la maschera b) a cui accede caio che puo solo aggiornare i dati ma non modificarli ne cancellarli:
    es tizio puo inserire un oggetto es cavallo caio puo solo scegliere il colore nell'amgito di una casella di testo
    a discesa (rosso, bianco, ecc).

    il problema, molto maccheronicamente è il seguente:
    ho elaborato due macro: la prima apre la maschera a); la seconda apre la maschera b).
    ora, scusate la mia ignoranza (perchè sono un neofita, per di piu impaziente) ma io vorrei un modulo costruito pressapoco
    cosi:
    se l'utente che apre il programma è tizio (il current user); allora apri la machera A)
    invece se l'utente che apre il programma (il cunter user) è caio; allora apri la maschera b)

    come traducono queste regole in linguaggio vba per access? grazie

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Dal regolamento

    1) In questo forum NON si parla di alcune funzionalità peculiari di Microsoft Access (macro, maschere, report, etc) che continueranno ad essere trattate nel forum "Windows e software"

    4) Mettere fra parentesi quadre il nome del database utilizzato con una breve descrizione del problema

    Per cortesia, maggiore attenzione la prossima volta
    Sposto

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Devi creare un modulo separato all'interno del quale metti questo codice:
    codice:
    Function ApriAoBoC()
    
    ' se l'utente è Admin apre  MasA
        If CurrentUser() = "Admin" Then
            DoCmd.OpenForm "MasA", acNormal, "", "", , acNormal
            
    ' se l'utente è Marco apre  MasB
        ElseIf CurrentUser() = "Marco" Then
            DoCmd.OpenForm "MasB", acNormal, "", "", , acNormal
            
    ' Per tutti gli altri utenti apre MasC
        Else
            DoCmd.OpenForm "MasC", acNormal, "", "", , acNormal
        End If
        
    End Function
    Con queso esempio puoi aprire 3 diverse maschere
    MasA x Admin
    MasB x Marco
    MasC x Tutti gli altri




    __________________________________________________ ____________________________
    __________________________________________________ ____________________________
    __________________________________________________ ____________________________

    IN ALTERNATIVA se le maschere da aprire sono fra di loro simili
    puoi optare per avere un'unica maschera

    e su questa all'evento di caricamento ( load )
    vai a definire le autorizzazioni utente.

    Quindi nel modulo interno della maschera ( NON un modulo separato )
    scrivi questo codice:
    codice:
    Private Sub Form_Load()
    
    '   QUESTO MODULO è INTERNO ALLA MASCHERA DA APRIRE
    
    '  Se utente è Admin ha tutte le autorizzazioni
        If CurrentUser() = "Admin" Then
            Me.AllowAdditions = True
            Me.AllowDeletions = True
            Me.AllowEdits = True
            
    '  Se utente è Marco non puo eliminare record
        ElseIf CurrentUser() = "Marco" Then
            Me.AllowAdditions = True
            Me.AllowDeletions = False
            Me.AllowEdits = True
            
    '  Tutti gli altri: non aggiungono, non cancellano,  non modificano,  ( Sola lettura )
        Else
            Me.AllowAdditions = False
            Me.AllowDeletions = False
            Me.AllowEdits = False
        End If
        
    End Sub

    Ottieni che all'apertura VBA controlla l'utente e da le autorizzazioni
    desiderate. ( queste le devi calibrare te )





  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    2
    Grazie tantissime!!!!! ho provato il primo modulo ed è proprio quello che mi serviva e funziona bene. in realta come amministratori ne devono entrare solo 4, io compreso, gli altri sono utenti che possono solo aggiornare. del resto l'accesso è consentito solo agli utenti autorizzati.

    scusami se approfitto ancora, ma volevo illustrarti come ho strutturato il modulo.
    dunque ci sono 10 utenti registrati di cui solo 4 con controllo completo:

    io
    tizio
    caio
    sempronio

    gli altri possono solo aggiornare.

    ora io ho scritto il modulo in questo modo

    se il current user è luigi
    vai alla maschera a)

    se il current user è tizio
    vai alla maschera a)

    se il current user è caio
    vai alla maschera a)

    se il current user è sempronio
    vai alla maschera a)

    se il current user <> da luigi allora vai alla maschera b)

    in questo modo, siccome possono accedere all'applicazione solo gli utenti autenticati a monte è ovvio che lui concederà l'accesso a tutti alla maschera bi, ma, ovviamente, solo a tutti quelli autenticati. in tal modo ho bypassato il probrema del codice per gli altri.

    ora volevo sapere ti trovi o pensi che sia imperfetto questo sistema?

    grazie ancora

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    A parer mio la 2° ipotesi "ALTERNATIVA" che ti avevo consigliato è
    piu semplice ed elastica.


    Se uno dei 4 utenti perde la vista e ti chiede dei caratteri piu grossi
    farai una terza maschera ???????

    Se uno dei 6 utenti restanti dovra accedere a un particolare dato
    farai una quarta maschera ?????


    Se prendi in considerazione la ipotesi alternativa con 1 sola maschera
    ottieni che alla apertura puoi ( in funzione dell'utente )

    Visualizzare o no i vari controlli
    Impostare le dimensioni dei caratteri
    date le autorizzazioni di lettura o scrittura PER OGNI CONTROLLO
    autorizzare o non aggiunte di record
    Eccetera eccetera


    __________________________________________________ _________________
    __________________________________________________ _________________
    __________________________________________________ _________________


    Fatta questa premessa ritorno sulla domanda specifica

    Ho 3 dubbi

    _____ 1°) __________
    se il current user <> da luigi allora vai alla maschera b)
    Immagino che volevi dire <> da luigi, tizio, caio e sempronio

    _____ 2°) __________

    Perche usi "<>" e non "Else" (altrimenti)

    Se usi <> devi RIspecificare i 4 nomi con rischio di errori banali di digitazione

    Se usi Else è implicito che se non è della "rosa dei 4" ricade nella 2° condizione

    _____ 3°) __________

    Io raggrupperei le prime 4 condizioni ( luigi tizio caio sempronio )
    in una unica condizione in questo modo
    codice:
    If (CurrentUser() = "luigi" Or CurrentUser() = "tizio" Or CurrentUser() = "caio" Or CurrentUser() = "sempronio") Then


    __________________________________________________ __________________


    Postaci un po di codice che riusciamo a darti indicazioni piu precise
    e dicci la versione di Acess







    __________________________________________________ __________________

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.