Me!maschera2.Form.AllowAdditions = Me.AllowAdditions
Me!maschera2.Form.AllowDeletions = Me.AllowDeletions
Me!maschera.Form.AllowEdits= Me.AllowEdits
in questo modo però la sottomaschera2 eredità solo quelle condizioni
che sono state inserite nella maschera proprietà della maschera
principale e non quelle attribuite all'utente dalla login di accesso.
Qualcuno può aiutarmi a risolvere? grazie
select case myUserType
case 1: ...bla bla
case 2: ...blibli
...... bloblo
end select
--
ac
> se non esponi come hai realizzato la gestione delle politiche di
> sicurezza le risposte avranno una infima accuratezza
> i.e
>
> select case myUserType
> case 1: ...bla bla
> case 2: ...blibli
> ...... bloblo
> end select
> --
> ac
ciao, innanzittutto grazie per la risposta,.
per quanto riguarda il mio post specifico che accedo alla maschera
Principale (maschera1) con click su un pulsante colloccato su un
pannello di controllo che apre la maschera principale (maschera1) in
base al tipo di autorizzazioni date all'utente. Queste stesse
autorizzazioni dovrei estenderle anche a tutte le sottomaschere della
sottomaschera principale (maschera1) che per l'esattezza sono:
maschera2, maschera3, maschera4 e maschera5.
allego codice:
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
le autorizzazioni date all'utente sono quelle che leggi nel codice che
riportato sopra il caso D che è quello che mi interessa di più ha
diritti di inserimento dati e basta
la versione che uso di access è la 2003
Quello che leggo e' questo:
1) Restituisci un qualcosa (nome utente?) in base a Utente e password
2) In base al contenuto di una casella di testo non ben identificata
(*testo2*, valori A o D o diverso) consenti o meno aggiornamenti,
cancellazioni, inserimento.
Q:
1) Chi definisce il valore di testo2? Da dove lo prendi?
2) Come leghi l'utente al valore di Testo2?
--
ac
credo da qui
Private Sub Comando10_Click()
On Error GoTo Err_Comando10_Click
If Len(Me!utente & "") = 0 Or _
Len(Me!password & "") = 0 Then
MsgBox "ATTENZIONE, INSERISCI USER E PASSWORD"
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
Else
Me.data_accesso = Now()
Controlla_Dati = DCount("id", "tbl_utenti", "utente = forms!mascher4!
UTENTE and password = forms!mascher4!PASSWORD")
If Controlla_Dati = 1 Then
Dim abilitazione As String
Dim msg As Integer
abilitazione = DLookup("Abilitazione", "tbl_utenti", "utente = forms!
mascher4!UTENTE and password = forms!mascher4!PASSWORD")
Select Case abilitazione
Case "a"
Nome = DLookup("nome", "tbl_utenti", "utente = forms!mascher4!UTENTE
and password = forms!mascher4!PASSWORD")
Me.Visible = False
DoCmd.OpenForm "PannelloComandi", , , , , , Nome
Forms!PannelloComandi!Testo2.Value = "A"
Case "b"
Nome = DLookup("nome", "tbl_utenti", "utente = forms!mascher4!UTENTE
and password = forms!mascher4!PASSWORD")
Me.Visible = False
DoCmd.OpenForm "PannelloComandi", , , , , , Nome
Forms!PannelloComandi!Testo2.Value = "B"
Case "d"
Nome = DLookup("nome", "tbl_utenti", "utente = forms!mascher4!UTENTE
and password = forms!mascher4!PASSWORD")
Me.Visible = False
DoCmd.OpenForm "PannelloComandi", , , , , , Nome
Forms!PannelloComandi!Testo2.Value = "D"
Case Else
Dim strMsg As String, strTitolo As String
Dim intStile As Integer
strMsg = "Non sei ancora abilitato all'uso del programma"
intStile = vbOKOnly + vbInformation
strTitolo = "ATTENZIONE"
MsgBox strMsg, intStile, strTitolo
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
End Select
Else
If MsgBox("ATTENZIONE VERIFICA L'ESATTEZZA DEI DATI INSERITI, VUOI
RIPROVARE?", vbYesNo + vbCritical, "ATTENZIONE") = vbNo Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
DoCmd.Quit
Else
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
Exit_Comando10_Click:
Exit Sub
Err_Comando10_Click:
Resume Exit_Comando10_Click
End If
End If
End If
End Sub
Private Sub Etichetta12_Click()
DoCmd.OpenForm "registrazione", acNormal, , , acFormAdd 'inserimento
DoCmd.OpenForm "mascher4", , , , , acHidden
End Sub
Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord acForm, Me.Name, acNewRec
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo errore
If Len(Me!utente & "") = 0 Or _
Len(Me!password & "") = 0 Then
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True
Exit Sub
errore:
If err.Number = 2046 Then
Resume Next 'oppure Exit Sub
End If
End If
End Sub
Private Sub utente_AfterUpdate()
Me.utente = UCase(Mid(Me.utente, 1, 1)) & LCase(Mid(Me.utente, 2))
End Sub
Devi spostare le istruzione nella load del form passando il parametro di
autorizzazione.
Quando fai la openform viene eseguita la routine associata all'evento e
le proprieta' del form non sono ancora state modificate indi alla
subform viene associato il valore base di proprieta' della maschera
principale. Tra l'altro quella openform che fai, se la tua intenzione e'
di filtrare per Nome, e' sbagliata il parametro where e' dopo due virgole
Probabile istruzione corretta
OpenForm("Maschera1", , , "nome=" & Nome, , , "" & Testo2)
sulla routine di evento
if openargs = "A" then
......
elseif opeargs = "D" then
........
else
.......
endif
--
ac
a riciao scusa ma mi sono perso :-(