drepturi diferite pentru utilizatori diferiti
drepturi diferite pentru utilizatori diferiti
Am o baza de date Access 2007 pentru care trebuie sa dau drepturi depline (inclusiv editare) pentru 2 utilizatori si drept de utilizare (numai interogari si rapoarte fara a face modificari in date, dar sa poata modifica parametrii interogarilor) altor utilizatori, mai multi la numar. Spuneti-mi va rog daca se poate face si cum. Multumesc.
Re: drepturi diferite pentru utilizatori diferiti
Din cate inteleg eu aplicatia ta este o aplicatie multiuser. Asa cum spuneam si cu alte ocazii, firma Microsoft a lasat posibilitatea ca la acelasi rezultat sa se ajunga prin mai multe cai. Ce iti recomand eu, este sa faci formulare de introducere, de vizualizare si de modificare a informatiilor. In pagina de proprietati a fiecarui formular, in tabul ''Date'', Access-ul permite proiectantului, ma rog, programatorului sa seteze ca formularul, spre exemplu sa fie doar de introducere date (''Intrare date'', se seteaza pe ''Da''), de vizualizare, din acelasi tab, adica ''Date'', se alege optiunea "Se permit stergeri'' si se seteaza pe ''Nu'', ''Se permit adaugari'' si se seteaza pe ''Nu'',''Se permit editari'' si se seteaza pe ''Nu'', iar la cel de modificare se seteaza optiunile amintite mai sus, exact invers. Acum, pentru a da drepturi de editare unui utilizator, spre exemplu, cand apasa, eu stiu, butonul de deschidere al unui formular de introducere date, se poate prin functia ''InputBox'' sa-i solicite utilizatorului introducerea unei parole, presetate de proiectantul aplicatiei. Pentru utilizatorul care are dreptul doar de a le vizualiza, i se va permite prin apasarea unui buton, sa zicem dupa un ''Switchboard - tablou principal'' sa deschida un formular de vizualizare, care sa nu permita conform setarilor aratate mai sus sa stearga, sa introduca date sau sa le modifice (evident lucrul acesta se poate face si prin cod VBA, dar inteleg ca iti e mai greu asa), si ce este acum extrem de important, din formularul de vizualizare, proiectantul, obligatoriu, trebuie sa permita utilizatorului cu drepturi desemnate pt modificare, prin intermediul unui buton sa faca legatura cu un fomular de modificare a datelor. Bineanteles ca si aici va trebui sa fie introdusa o parola, dar atentie, formularul de modificare trebuie sa permita intotdeauna modificarea acelei inregistrari care initial era doar vizualizata.
Nu stiu cat vei intelege din toate astea, dar mai jos iti voi da si niste proceduri care sa te ajute, daca nu intelegi, o sa fac o baza de date model, dar nu acum ca sunt extrem de obosita.
Aceasta procedura va fi utilizata pentru accesarea formularului de modificare.
Acum procedura (un model) pt introducerea de parola
Aceeasi procedura poate fi utilizata si pentru deschiderea unui formular de introducere date, cu singurul amendament ca in loc de ''....modificarea datelor'', se va scrie ''introducerea datelor''.
Cat priveste chestiunea cu modificarea parametrilor la interogari, ei bine, in primul rand trebuie sa stiu ce fel de aplicatie este, adica este *.accdb, *.accde sau de tip runtime. in orice caz, in general, lucrul acesta presupune niste formulare care nu se deschid decat prin intermediul unor butoane, iar interogariile cu pricina sunt de regula sursa de inregistrari a unor rapoarte.
Nu stiu cat vei intelege din toate astea, dar mai jos iti voi da si niste proceduri care sa te ajute, daca nu intelegi, o sa fac o baza de date model, dar nu acum ca sunt extrem de obosita.
Cod: Selectaţi tot
Private Sub cmdModificare_Click
On Error Resume Next
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "frmFormularModificare'' ' variabila de tip sir de caractere stDocName va fi de fapt numele formularului de modificare
stlinkCriteria = '' [NumeCehiePrimara] = '' & Me![NumeCheiePrimara]
' legatura dintre formularul de vizualizare si cel de modificare se face prin intermediul cheii primare a sursei, care pt ambele
' formulare trebuie sa fie, cum e si firesc, aceeasi
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Close acForm, Me.Name ' pentru a inchide formularul de vizualizare (reamprospatarea datelor dupa redeschidere)
End Sub
Acum procedura (un model) pt introducerea de parola
Cod: Selectaţi tot
Private Sub Form_Open(Cancel As Integer)
Dim strPwd As String
strPwd = InputBox("Va rugam sa introduceti parola pt a avea access la modificarea datelor", "Parola")
If strPwd <> "modificare" Then
MsgBox "Regret, dar nu aveti acces la modificarea datelor!", vbCritical, "Actiune respinsa!"
Cancel = True
End If
End Sub
Cat priveste chestiunea cu modificarea parametrilor la interogari, ei bine, in primul rand trebuie sa stiu ce fel de aplicatie este, adica este *.accdb, *.accde sau de tip runtime. in orice caz, in general, lucrul acesta presupune niste formulare care nu se deschid decat prin intermediul unor butoane, iar interogariile cu pricina sunt de regula sursa de inregistrari a unor rapoarte.
-
- Mesaje: 88
- Membru din: Vin Sep 04, 2009 7:45 am
- Localitate: Slatina
Re: drepturi diferite pentru utilizatori diferiti
In mod normal intr-o aplicatie multiuser este bine de stiut, cel putin, ce utilizator a adaugat/modificat ultima data o inregistrare dintr-o tabela.
In caz contrar daca anumite informatii din tabele nu sunt corecte nu stii pe cine sa tragi la raspundere.
Din aceasta cauza eu am in fiecare tabela un camp Operator text 30.
Am o tabela tblPersonal cu urmatoarea structura:
- OperatorID autonumber, cheie primara;
- Operator text 30 Indexed No Duplicates;
- Parola text 15.
Aplicatia dispune de o interfata astfel incat fiecare utilizator sa aiba intr-un meniu (Switchboard) toate formularele si rapoartele de care are nevoie.
La startare am un formular LogIn prin care preiau utilizatorul si-i validez parola. Daca sunt corecte merge mai departe daca nu Quit.
Am o tabela tblFormulare cu numele formularelor si rapoartelor aplicatiei.
- FazaID autonumber, cheie primara;
- NumeFaza text 50 Indexed No Duplicates;
- NumeFORM text 50.
De obicei rapoartele le apelez tot prin intermediul unor formulare intrucat interogarile aferente rapoartelor au nevoie de niste parametrii.
Am o tabela tblFazeOperator cu ce poate face un utilizator.
- OperatorID;
- FazaID;
- TipAccess text 2 (RW sa RO)
RW - utilizatorul cu aceasta faza poate aduga/edita/sterge inregistrari.
RO - utilizatorul cu aceasta faza poate decat vizualiza datele.
Daca o anumita inregistrare din tblFormulare nu apare in aceasta tabela inseamna ca utilizatorul nu are dreptul la ea.
Formularul LogIn (daca validarile sunt Ok) imi starteaza un formular de tip Switchboard cu fazele aferente utilizatorului specificat.
Aceste faze pot fi puse, de exemplu intr-un ListBox, sau mai elegant intr-un treeview.
OperatorID si Operator sunt memorate in niste variabile publice.
Am o functie de genul:
Cand deschid fiecare formular fac ceva de genul:
In caz contrar daca anumite informatii din tabele nu sunt corecte nu stii pe cine sa tragi la raspundere.
Din aceasta cauza eu am in fiecare tabela un camp Operator text 30.
Am o tabela tblPersonal cu urmatoarea structura:
- OperatorID autonumber, cheie primara;
- Operator text 30 Indexed No Duplicates;
- Parola text 15.
Aplicatia dispune de o interfata astfel incat fiecare utilizator sa aiba intr-un meniu (Switchboard) toate formularele si rapoartele de care are nevoie.
La startare am un formular LogIn prin care preiau utilizatorul si-i validez parola. Daca sunt corecte merge mai departe daca nu Quit.
Am o tabela tblFormulare cu numele formularelor si rapoartelor aplicatiei.
- FazaID autonumber, cheie primara;
- NumeFaza text 50 Indexed No Duplicates;
- NumeFORM text 50.
De obicei rapoartele le apelez tot prin intermediul unor formulare intrucat interogarile aferente rapoartelor au nevoie de niste parametrii.
Am o tabela tblFazeOperator cu ce poate face un utilizator.
- OperatorID;
- FazaID;
- TipAccess text 2 (RW sa RO)
RW - utilizatorul cu aceasta faza poate aduga/edita/sterge inregistrari.
RO - utilizatorul cu aceasta faza poate decat vizualiza datele.
Daca o anumita inregistrare din tblFormulare nu apare in aceasta tabela inseamna ca utilizatorul nu are dreptul la ea.
Formularul LogIn (daca validarile sunt Ok) imi starteaza un formular de tip Switchboard cu fazele aferente utilizatorului specificat.
Aceste faze pot fi puse, de exemplu intr-un ListBox, sau mai elegant intr-un treeview.
OperatorID si Operator sunt memorate in niste variabile publice.
Am o functie de genul:
Cod: Selectaţi tot
Public Function CePotFace(OperatorID As Long, NumeFORM As String) As String
CePotFace = "ER"
Dim FazaID As Long
FazaID = Nz(DFirst("[FazaID]", "tblFormulare", "[NumeFORM]='" & Trim(NumeFORM) & "'"), 0)
CePotFace = Nz(DFirst("[TipAccess]", "tblFazeOperator", "[OperatorID]=" & OperatorID & " AND [FazaID]=" & FazaID), "ER")
End Function
Cod: Selectaţi tot
Private Sub Form_Open(Cancel As Integer)
Dim strACC As String
strACC = CePotFace(pub_OperatorID, Me.Name)
If strACC = "ER" Then
MsgBox "Nu aveti dreptul la aceasta faza.", vbCritical, "Mesaj operator"
Cancel = True
Exit Sub
End If
If strACC = "RW" Then
Me.AllowAdditions = True
Else
Me.AllowAdditions = False
End If
Me.AllowEdits = Me.AllowAdditions
Me.AllowDeletions = Me.AllowAdditions
End Sub
Re: drepturi diferite pentru utilizatori diferiti
Multumesc Ady, multumesc Marin. Am reusit sa aranjez multe lucruri in baza mea de date inclusiv sa creez un switchboard dragut si util (zic eu). Problema accesului o las pe mai tarziu. Luni intru in concediu si am o multime de alte treburi. Pastram legatura.
Re: drepturi diferite pentru utilizatori diferiti
Valy iti datorez un miel de Paste. Scuze si inca o data multumesc. Am reusit sa parolez editarea si chiar functioneaza baza de date multuiser asa cum mi-am dorit. Ar mai fi un mic amanunt de rezolvat si nu stiu cum: la tastarea parolei sa se afiseze * nu caracterele respective. Poate cineva sa-mi spuna cum fac asta?
-
- Mesaje: 88
- Membru din: Vin Sep 04, 2009 7:45 am
- Localitate: Slatina
Re: drepturi diferite pentru utilizatori diferiti
Cu InputBox nu se poate face asa ceva.
Trebuie sa-ti construiesti un formular propriu care sa faca ceva de genul InputBox.
Pentru a afisa * in loc de caraterul tastat la Input Mask pui Password
Daca tot spui ca ai creat un switchboard (sa zicem cu numele frmMain) poti sa pui in el un Check Box (PotModifica cu valoarea implicita False),
sa mai pui un button carea sa apeleze un formular prin care sa ceri parola. Daca stie parola atunci Forms!frmMain!PotModifica=True.
In acest caz formularele care permit modificare vor avea, in loc de codul scris de valy, ceva de genul:
Formularul frmMain trebuie sa se inchida numai cand se inchide aplicatia.
Trebuie sa-ti construiesti un formular propriu care sa faca ceva de genul InputBox.
Pentru a afisa * in loc de caraterul tastat la Input Mask pui Password
Daca tot spui ca ai creat un switchboard (sa zicem cu numele frmMain) poti sa pui in el un Check Box (PotModifica cu valoarea implicita False),
sa mai pui un button carea sa apeleze un formular prin care sa ceri parola. Daca stie parola atunci Forms!frmMain!PotModifica=True.
In acest caz formularele care permit modificare vor avea, in loc de codul scris de valy, ceva de genul:
Cod: Selectaţi tot
Private Sub Form_Open(Cancel As Integer)
If Forms!frmMain!PotModifica=False Then
MsgBox "Regret, dar nu aveti acces la modificarea datelor!", vbCritical, "Actiune respinsa!"
Cancel = True
End If
End Sub
Re: drepturi diferite pentru utilizatori diferiti
Wow, abia astept sa vina Pastele,.... Mai jos o sa gasesti "celebrul" de acum, model de baza de date, care are la formularul de vizualizare, in coltul din dreapta sus, un buton de comanda ce face legatura cu un formular de introducere/ modificare date, tocmai printr-un gen de formular amintit si de Marin Zanfir... Spor la "succesuri"!...Daniela scrie:Valy iti datorez un miel de Paste. Scuze si inca o data multumesc. Am reusit sa parolez editarea si chiar functioneaza baza de date multuiser asa cum mi-am dorit. Ar mai fi un mic amanunt de rezolvat si nu stiu cum: la tastarea parolei sa se afiseze * nu caracterele respective. Poate cineva sa-mi spuna cum fac asta?
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: drepturi diferite pentru utilizatori diferiti
desi este un topic mai vechi este totusi de actualitate.
Sunt interesat si eu de o astfel de posibilitate de atribuire de roluri diferite pentru utilizatori diferiti (am initiat, pe forum chiar si dicutii pe aceasta tema dar nu am obtinut rezultatele scontate). Am inteles partea cu setarea formularului (atribuirea de roluri0 insa nu am reusit sa realizez partea de logare, asa ca atasez alaturat tentativa mea de LogInDB in speranta ca voi primi un raspuns care sa ma scoata din impas
Multumesc
Sunt interesat si eu de o astfel de posibilitate de atribuire de roluri diferite pentru utilizatori diferiti (am initiat, pe forum chiar si dicutii pe aceasta tema dar nu am obtinut rezultatele scontate). Am inteles partea cu setarea formularului (atribuirea de roluri0 insa nu am reusit sa realizez partea de logare, asa ca atasez alaturat tentativa mea de LogInDB in speranta ca voi primi un raspuns care sa ma scoata din impas
Multumesc
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Re: drepturi diferite pentru utilizatori diferiti
din aplicatia prezentata mai lipseste o categorie de utilizator> ADMINISTRATORUL
El se poate loga fara parola? Sau trebuie si el trecut in tabelul cu operatori si atribuita o anumita/anumite operatii?
El se poate loga fara parola? Sau trebuie si el trecut in tabelul cu operatori si atribuita o anumita/anumite operatii?