Autor Thema: Feld $Readers gesetzt zeigt aber keine Wirkung  (Gelesen 2538 mal)

Offline margli

  • Junior Mitglied
  • **
  • Beiträge: 88
Feld $Readers gesetzt zeigt aber keine Wirkung
« am: 05.08.08 - 12:45:57 »
Hallo liebe Forum Mitglieder,

ich habe ein kleines Berechtigungsproblem. Wir haben eine Art Dokumentations Datenbank (MS Office Bibliothek). Hier habe ich eine Ansicht angelegt. Dokumente, die dort gespeichert werden sollen, dürfen nur eine bestimmte Gruppe sehen. Auf diese Datenbank haben alle Zugriff. Ich habe jetzt eine Extra Gruppe angelegt.
Wenn ich ein Dokument einstelle, dann ist es erstmal für jeden sichtbar. Gehe ich über den Reiter "Sicherheit" -> "Wer kann dieses Dokument lesen" --> Häckchen raus bei "Alle Leser und höhere" und füge dann nur die Gruppe hinzu, dann funktioniert alles. Nun versuche ich diese manuelle "Maßnahme" zu automatisieren. Im Queryclose habe ich dazu folgendes eingefügt...

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
   Dim W As New NotesUIWorkspace
   Dim doc As notesdocument
   Dim item As NotesItem
   Set Source = W.CurrentDocument
   Call source.Refresh
   If (Source.FieldGetText ("Categories") = "ABC") Then
      Set doc = source.document
      Call doc.ReplaceItemValue("$Readers", "ABC-Gruppe")
      Set item = doc.GetFirstItem("$Readers")   
      If item.IsReaders = False Then item.IsReaders = True
      Call doc.ReplaceItemValue("DocumentReaders", "ABC-Gruppe")
      Call doc.Save(True, True)
   End If
End Sub

Nach dem Abspeichern ist das $Readers Feld auch richtig mit dem Wert ABC-Gruppe gesetzt. Leider können aber die User, die in der Gruppe sind, das Dokument nicht sehen. Ich weiß nicht wo mein Denkfehler ist.

Würde mich über Tipps freuen.

Vielen Dank im Voraus.
Martin

Offline Hardcore-Hoschie

  • Frischling
  • *
  • Beiträge: 16
  • Geschlecht: Männlich
Re: Feld $Readers gesetzt zeigt aber keine Wirkung
« Antwort #1 am: 05.08.08 - 20:01:27 »
Hi,

hast Du schonmal versucht, das Feld über die NotesItem-Klasse (z.B. mittels Set LeserFeld = New NotesItem("$Readers","ABC", READERS)) anzulegen (das vorhandene bei Bedarf natürlich erst rausschmeißen) ?
Evtl. könnte auch ein anderer Feldname was bringen - $Readers is ja bekanntlich "reserviert"...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feld $Readers gesetzt zeigt aber keine Wirkung
« Antwort #2 am: 05.08.08 - 20:21:09 »
Ich würde auch auf den reservierten Namen tippen. Nenn das Item von mir aus "DieWollMerNeilasse" or whatever, aber nicht $Readers, was aus den Maskenproperties kommt. Oder nimm gleich das "DocumentReaders", was Du ja schon eingeführt hast.

Bernhard

Offline margli

  • Junior Mitglied
  • **
  • Beiträge: 88
Re: Feld $Readers gesetzt zeigt aber keine Wirkung
« Antwort #3 am: 06.08.08 - 11:29:53 »
Hallo,

OK Danke für den Hinweis. Ich werde es testen. Ich bin bloß auf die Idee mit dem $Readers Feld gekommen, da dieses Feld auftaucht und mit dem Wert der Gruppe gefüllt ist, wenn ich über den Reiter "Sicherheit" -> "Wer kann dieses Dokument lesen" --> Häckchen bei "Alle Leser und höhere" raus nehme und dann die entsprechende Gruppe hinzufüge. Da dachte ich, wenn ich das automatisch setze, dann funktioniert das auch so. :)


Martin

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Feld $Readers gesetzt zeigt aber keine Wirkung
« Antwort #4 am: 06.08.08 - 12:32:44 »
Hallo,

ich glaube ja eher, daß das mit deinem wilden Konstrukt im QueryClose zusammenhängt. Dir wird ein blitzsauberes NOTESUIDOCUMENT als Source übergeben, aber du bestimmst es neu aus dem CurrentDocument des Workspaces - und machst dann ein REFRESH. Wenn sich dabei noch einmal ein Feldinhalt ändert, werden Maskeneigenschaften ein zweites Mal über dein Dokument gejagt, das du im Backend schon mit einem $Readers-Feld versehen hast. Das Call doc.Save(True,True) müßte eigentlich für eine ganze Kaskade von Replikationskonflikten sorgen. Vermutlich verhindert nur die Grundeinstellung "Replizierkonflikte mischen" das - aber dabei fliegt dir das $READERS-Feld wieder raus bzw. behält nicht die Eigenschaft bei, daß es ein Leserfeld ist.

Aber ich schließe mich auch allen anderen an: ich würde das Systemfeld nicht benutzen, sondern einen anderen Feldnamen wählen.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline margli

  • Junior Mitglied
  • **
  • Beiträge: 88
Re: Feld $Readers gesetzt zeigt aber keine Wirkung
« Antwort #5 am: 06.08.08 - 12:39:18 »
Hallo Nobert,

damit hast Du wahrscheinlich recht. Ich habe jetzt einfach mal nicht das Systemfeld benutzt, sondern ein anderes Feld. Auch dann kann der Benutzer der Gruppe das Dokument nicht sehen. Ich werde es mal versuchen umzubauen.

Martin

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz