[Access] login di accesso e autorizzazioni utenti

Anonimo
2009-11-22T08:56:45+00:00

Ciao a tutti, sono nuovo del forum e vorrei sottoporvi un problema che ho con DB access 2003.

Al DB in questione si accede attraverso login non di sistema e l'utente in base al tipo di abilitazione che gli viene concesso (amministratore, solo inserimento dati o sola lettura dati) ha accesso all'utilizzo del data base. il mio problema è che il tutto funziona per la maschera principale (maschera1) ma non per le sue sottomaschere. Qualcuno sa dirmi come posso far ereditare alle varie sottomaschere (Maschera2, maschera3, maschera4 e maschera5) le autorizzazioni attribuite al singolo utente?

questo è il comando su click del panelloComandi

Private Sub Comando0_Click()

Dim Nome As String

Nome = DLookup("nome", "tbl_utenti", "utente = forms!mascher4!UTENTE

and password = forms!mascher4!PASSWORD")

If Me.Testo2 = "A" Then

DoCmd.OpenForm "MAschera1", , , , , , Nome

Forms!maschera1.AllowAdditions = True

Forms!maschera1.AllowDeletions = True

Forms!maschera1.AllowEdits = True

ElseIf Me.Testo2 = "D" Then

DoCmd.OpenForm "MAschera1", , , , , , Nome

Forms!maschera1.AllowAdditions = True

Forms!maschera1.AllowDeletions = False

Forms!maschera1.AllowEdits = False

Else

Dim NrRec As Integer

NrRec = DCount("*", "Tabella1")

If NrRec = 0 Then

MsgBox "Attenzione non ci sono dati da visualizzare"

Else

DoCmd.OpenForm "MAschera1", , , , , , Nome

Forms!maschera1.AllowAdditions = False

Forms!maschera1.AllowDeletions = False

Forms!maschera1.AllowEdits = False

End If

End If

End Sub

da una ricerca, non so se è corretta ho visto che si dovrebbe agire nella parte di codice sottoindicata, ma premetto che questo va oltre la mia portata quindi chiedo cortesemente se qualcuno di voi può darmi una mano.

Vi ringrazio per l'attenzione.

Private Sub Form_Load()

If Len(Me.OpenArgs) > 0 Then

Me.Caption = Me.OpenArgs

End If

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

9 risposte

Ordina per: Più utili
  1. Anonimo
    2009-11-22T17:29:04+00:00

    ciao ups_edo, grazie mille per la risposta e grazie per il tuo modo chiaro di spiegare.

    ho provato le tue ipotesi e succede questo:

    se metto nella sottomaschera me.AllowAdditions = ValoreAllowAdditions vedo le sottomaschere per i record già inseriti ma non la vedo più per i nuovi record se invece ommetto questa stringa posso anche inserire dei nuovi record.

    Un altro problema è che se pur potendo inserire nuovi record nella sottomaschera qualsiasi siano le autorizzazioni di accesso date all'utente, compreso l'amministratore, i dati contenuti nei record precedenti risultano comunque  non modificabili.

    puoi aitarmi a superare questo ostacolo? Grazie

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2009-11-23T11:17:01+00:00

    Ciao mi è venuto un dubbio ma il modulo fatto così è corretto?

    Public Sub valore()

           Dim ValoreAllowAdditions As Boolean

           Dim ValoreAllowDeletions As Boolean

           Dim ValoreAllowEdits As Boolean

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2009-11-23T09:38:21+00:00

    Ciao edoardo,

    sono proprio in alto mare ho fatto delle prove per quanto riguarda il collegamento della maschera principale (maschera1) con la sua sottomaschera (maschera2) mi sembra corretto anche perchè senza questa nuova condizione funziona bene, comunque come master ho messo Id tabella1 (tabella collegata alla maschera1) e come campi secolari ho messo collegamento, che è un campo numerico intero lungo che unisce la tabella2 (tabella collegata alla maschera2) con la tabella1 in relazione uno a molti.

    La sottomaschera partenza rimane sempre solo inserimento anche nel caso amministratore, mentre la maschera 1 se cambio da questo codice

    If Me.Testo2 = "A" Then

    DoCmd.OpenForm "MAschera1", , , , , , Nome

    Forms!maschera1.AllowAdditions = True

    Forms!maschera1.AllowDeletions = True

    Forms!maschera1.AllowEdits = True

    a questo

    If Me.Testo2 = "A" Then

          ValoreAllowAdditions = True

          ValoreAllowDeletions = True

          ValoreAllowEdits = True

          DoCmd.OpenForm "MAschera1", , , , , , Nome

    quindi sostituendo Forms!maschera1. con questo Valore la maschera 1 ha sempre accesso completo

    Mi rendo conto che ti sto tormentando, ma mi sono proprio bloccato in questa cosa e non riesco a terminare il mio db

    Buona giornata:-)

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2009-11-23T06:49:39+00:00

    Ciao Luca.

    Mi sono accorto di aver fatto un piccolo errore del quale spero tu ti sia accorto (che comunque non credo abbia a che fare con i problemi da te segnalati). Al click del pannello comandi ovviamente l'apertura della form deve avvenire dopo aver valorizzato le variabili. E quindi

    If Me.Testo2 = "A" Then ValoreAllowAdditions = True ValoreAllowDeletions = True ValoreAllowEdits = True DoCmd.OpenForm "MAschera1", , , , , , Nome ...... eccetera

    Per gli altri problemi che hai segnalato credo tu debba fare un po di debug perchè ho fatto una prova al volo secondo la soluzione che ti ho proposto e mi funziona. Guarda bene in particolare le proprietà "Collega campi master" e "Collega campi secondari" dell'oggetto sottomaschera per la mancata visualizzazione.

    Buona giornata. Edo

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2009-11-22T14:12:26+00:00

    Ciao Luca.

    Se non ho capito male, tu applichi le autorizzazioni limitando le azioni che l'utente può fare valorizzando le proprietà Allow... Se è così, quello che ti serve è semplicemente di valorizzare, insieme alle proprietà della maschera principale, le stesse proprietà per le sottomaschere utilizzando la sintassi seguente:

    Forms!maschera1.NomeControlloSottomaschera.Form.AllowAdditions = False

    dove NomeControlloSottomaschera é il nome del controllo sottomaschera all'interno della maschera principale. L'uso della proprietà Form ti permette di poter fare riferimento a tutti gli oggetti e proprietà della sottomaschera.

    Un altra alternativa che mi viene in mente e che può essere più comoda è quella di valorizzare di salvare in variabili pubbliche (create in un modulo come public) i valori da attribuire alle proprietà delle form e poi di farle caricare dalle form stesse all'atto dell'apertura.

    Allora...

    1. Creare un modulo o utilizzarne uno esistente
    2. inserire

           Dim ValoreAllowAdditions as boolean

           Dim ValoreAllowDeletions as boolean

           Dim ValoreAllowEdits as boolean

    1. Al click del panelloComandi

          Dim Nome As String 

          Nome = DLookup("nome", "tbl_utenti", "utente = forms!mascher4!UTENTE and password = forms!mascher4!PASSWORD") 

          If Me.Testo2 = "A" Then 

          DoCmd.OpenForm "MAschera1", , , , , , Nome 

          ValoreAllowAdditions = True 

          ValoreAllowDeletions = True 

          ValoreAllowEdits = True

          ...... eccetera

    1. Nell'evento OnLoad o OnOpen di ognuna delle form che vuoi che assumano quelle autorizzazioni:

         Private Sub Form_Load()

         me.AllowAdditions = ValoreAllowAdditions

         me.AllowDeletions = ValoreAllowDeletions

         me.AllowEdits = ValoreAllowEdits

         End Sub

    Prova così.

    Ciao. Edoardo

    La risposta è stata utile?

    0 commenti Nessun commento