20. april 2006 - 14:09Der er
11 kommentarer og 2 løsninger
Rettigheder vha mdw
Hej.
Jeg sidder med et lille problem.
Jeg har en database, som skal bruges af flere afdelinger til at læse og skrive i. Mit problem er at den enkelte bruger KUN må skrive oplysninger ind for din egen afdeling (man vælger afdeling under oprettelsen af en ny post), og må ligeledes kun redigere eksisterende poster for egen afdeling. Det skal være muligt at se oplysninger for de øvrige afdelinger.
Når brugeren er logget ind lægger du brugerens afdeling i en global variabel. I tabellen står hvilken afdeling den enkelte post tilhører.
Så kan du skrive
if globalAfdeling = tabelAfdeling then Me.AllowEdits = True else Me.AllowEdits = false end if
Ved oprettelse af en post skal du sætte afdeling i et ikke skrivebart felt på formularen.
Synes godt om
Slettet bruger
20. april 2006 - 15:19#2
Den bruger som er logget ind brug hans afdeling, som kriterie for forespørgslen og lås afdelingsfeltet og brug hans afdeling som standardværdi. Herudover så laver du en visningsudgave af formularen, som er låst, men som viser data for alle afdelinger!~)
Nu er det mig at det er galt med, men hvor sættes det ind????
Brugerne er oprettet i en .mdw-fil hvor de forskellige afdelinger også er oprettet. Hvordan er det lige at jeg kæder det sammen med den tabel hvori de afdelinger er oprettet? Jeg kan også godt leve med at afdelingsnavnet skal være arbejdsgruppen, men hvor trækker jeg det navn ud i en session?
As fars as I know, you cant use Access security at record level. For each record you create in the tables you will need to have a field containing afdeling. Then you will need to check (in code) that the current user has the correct permissions to alter the record (same afdeleing).
Jeg har forsat lidt problemer. Ud fra ovenstående eksempel, bliver brugeren der hentet ud fra en MDW-fil eller? Hvordan får jeg kædet tabellen med afdelingerne sammen med brugeren som er logget ind. Den enkelte bruger er medlem af en brugergruppe, som har samme navn som afdelignen. Kan jeg ikke trække på det navn på en eller anden måde?
Du kan ikke bruge en .mdw fil til ret meget, der ligger et par forespørgsler der kan bruges til oplysninger om hvem der er medlem af hvilke grupper. Det kan måske klares med API kald. Mit forslag går på at du har et ekstra felt i tabellen som hedder afdeling, ved oprettelse bliver her automatisk skrevet hvilken afdeling der ar oprettet posten. Alle kan læse posten, men det er kun folk fra samme afdeling der må slette/ændre posten. Det klares ved at bruge Me.AllowEdits = false på formen for folk som ikke tilhører gruppen.
Me.AllowEdits har jeg gennemskuet - så langt så godt. Lige nu har jeg brugerne oprettet i den berygtet mdw-fil. Er det den bedste løsning, eller er der alternativer, som er bedre? Jeg har forsøgt at hente et afdelingsnr. ud af en tabel med "CurrentUser" som kriterie. Det har jeg fundet ud af ikke er nogen særlig let løsning. Jeg har forstået teorien i ovenstående forslag. Det er bare som om at jeg er lidt blank hvad koden angår - jeg kan ikke rigtigt få prikket hul på "bylden".... :-)
I tabellen der ligger under formularen skal du have et felt der hedder afdeling. På formularens on_current hændelse kan du så skrive
if rst("afdeling") = gstrAfdeling Me.AllowEdits = True else Me.AllowEdits = False end if Har du delt databasen op så du har en frontend og en backend ellers skal du overveje at gøre det.
Jeg er kommet frem til følgende kode: Private Sub Form_Open(Cancel As Integer) Dim curDB As Object Dim strBrugerNavn As String Dim strAfdeling As String
Set curDB = CurrentDb strBrugerNavn = LCase(CurrentUser) strAfdeling = LCase(Me!Afdeling)
If strBrugerNavn = LCase(Afdeling) Then Me.AllowEdits = True Else Me.AllowEdits = False End If End Sub
Det giver dog det problem at det er afhængig af første post der bliver åbnet. Hvordan løser jeg det problem? Jeg skulle jo gerne have funktionen til at køre hver gang en post bliver indlæst... :-)
Takker for hjælpen... Projektet er nu færdigt... :-)
//Kongsted
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.