Autor Thema: Maske nach Bedingung zum Lesen sperren  (Gelesen 1254 mal)

Offline bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
Maske nach Bedingung zum Lesen sperren
« am: 19.07.03 - 19:12:53 »
Hi,

ich habe in einer DB eine Maske u.a. mit dem Feld "Status". Des weiteren sind die Rollen [AlleMitarbeiter] und [T] vorhanden. Des weiteren noch mehrere Ansichten etc.

Was ich bräuchte:
Wenn ein Dokument den Status "In Bearbeitung" hat, dann soll dieses zwar für [AlleMitarbeiter] in den Ansichten erscheinen, aber wenn ein User das Dokument aus der Ansicht heraus (oder via Doc-Link) öffnen will, soll eine Meldung kommen à la "Dok ist in Bearbeitung und darf nicht geöffnet werden", und das Dok soll sich eben nicht öffnen lassen. Nur User mit Rolle [T] sollen das Dok lesen & editieren dürfen.
Nur wenn das Dok den Status "Freigegeben" hat, sollen [AlleMitarbeiter] auch lesen dürfen.


Klar, ich könnte die Doks in der/den Ansicht/en ausblenden, aber
 1) möchte ich, dass der Anwender zumindest sieht dass ein Dok vorhanden ist
 2) könnte ja der Anwender dann über einen ggf. vorhandenen Dok-Link auf das
Dok zugreifen.


Meine Versuche über Queryopen / Postopen - Abfragen per Formelsprache waren leider nicht erfolgreich  :(


Grüße,
Bob

Glombi

  • Gast
Re:Maske nach Bedingung zum Lesen sperren
« Antwort #1 am: 19.07.03 - 19:41:56 »
Hi,
Du kannst Script verwenden, um zu verhindern, dass das Dokument in den Bearbeitenmodus gesetzt wird.
Habe ich gerade in einer DB programmiert (allerdings unter R4):

(Declaration)
Const ALLOW_ROLE = "[T]"
Dim UserHasAllowRole As Integer
dim Close_Doc_Postopen as integer
dim Status as string

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
     
     Close_Doc_Postopen = False
     
     'Prüfe, ob User Rolle [T] hat
     UserHasAllowRole = False
     userroles = Evaluate("@UserRoles")
     Forall rolename In userroles
          If rolename = ALLOW_ROLE Then
               UserHasAllowRole = True
               Exit Forall
          End If              
     End Forall
     
     'Falls das Dokument im Bearbeitenmodus geöffnet wird: In Lesemodus setzen (Dok. wird nach QueryOpen durch Maskeneigenschaft in Bearbeitenmodus gesetzt)    
     If Not Isnewdoc Then
          If Source.Document.Status(0) = "In Bearbeitung" And Not UserHasAllowRole Then
               If Source.EditMode Then
                    Msgbox "Diese Dokument wird bereits bearbeitet.",_
                    0+64,"Hinweis"
                    Continue = False        
                    Close_Doc_Postopen = True
               End If              
          End If
     End If
     
End Sub


Sub Postopen(Source As Notesuidocument)    
     
     'Dokument schließen, falls im Bearbeitenmodus geöffnet wurde und der Status = "Fertig" ist
     If Close_Doc_Postopen Then
          Call Source.Close
          Exit Sub
     End If

End Sub


Sub Querymodechange(Source As Notesuidocument, Continue As Variant)

 If Not Source.EditMode Then
          If Source.Document.Status(0) = "In Bearbeitung" And Not UserHasAllowRole Then
               If Source.EditMode Then
                    Msgbox "Diese Dokument wird bereits bearbeitet.",_
                    0+64,"Hinweis"
 Source.EditMode = False
  Continue = False

             End If              
          End If
 end if


End Sub

Offline bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
Re:Maske nach Bedingung zum Lesen sperren
« Antwort #2 am: 19.07.03 - 19:45:45 »
Hi Glombi,

Zitat
Du kannst Script verwenden, um zu verhindern, dass das Dokument in den Bearbeitenmodus gesetzt wird.

Danke, aber der Anwender (Rolle [AlleMitarbeiter]) soll nicht lesen dürfen...

bye,
Bob


******* EDIT *******
Nachtrag: Wer Bearbeiten darf, manage ich über Autor-Felder; wer lesen darf über Leser-Feld; aber selbst wenn in Lesefeld [AlleMitarbeiter] eingetragen ist, sollen diese erst lesen dürfen, wenn Status = "Freigegeben".
******* EDIT *******
« Letzte Änderung: 19.07.03 - 19:53:13 von bob »

Offline bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
Re:Maske nach Bedingung zum Lesen sperren
« Antwort #3 am: 19.07.03 - 20:57:51 »
Sorry Glombi,

Dein Script war durchaus sehr hilfreich für mich, ich hab's mir nochmal genauer angesehen.....

Realisiert habe ich es wie folgt im QueryOpen:



Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   Const ALLOW_ROLE = "[T]"
   Dim UserHasAllowRole As Integer
   Dim Close_Doc_Postopen As Integer
   Dim QM_Status As String
   
   Close_Doc_Postopen = False
   
    'Prüfe, ob User Rolle [T] hat
   UserHasAllowRole = False
   userroles = Evaluate("@UserRoles")
   Forall rolename In userroles
      If rolename = ALLOW_ROLE Then
         UserHasAllowRole = True
         Exit Forall
      End If              
   End Forall
   
    'Falls Doc im Status "In Bearbeitung" und User ist NICHT = Rolle [T]: Dok nicht öffnen!
   If Source.Document.QM_Status(0) = "In Bearbeitung" And Not UserHasAllowRole Then
      Messagebox "Das Dokument ist in Bearbeitung und nicht Freigegeben. Daher dürfen Sie es nicht öffnen.", MB_OK, "Keine Berechtigung"         
      Continue = False         
   End If
End Sub



Bye,
Bob

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz