Autor Thema: Problem mit Dokument Berechtigungen  (Gelesen 12577 mal)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Problem mit Dokument Berechtigungen
« Antwort #20 am: 20.02.06 - 12:09:32 »
Ich habe das Ganze bei mir mal nachgestellt und mit dieser HideWhen-Formel für den Button sollte es funktionieren:

!(@UserName=From) & @IsNotMember("[creator]"; @UserRoles)

Voraussetzung ist natürlich, dass der Username im Feld Form in diesem Format, CN=Vorname Nachname/OU=Division/O=Firma, vorliegt und dass, wenn die DB lokal liegt die konsistente ACL aktiviert ist.

 
Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #21 am: 20.02.06 - 12:59:49 »
Alle Infos hier mal zusammengefasst:

Formular Felder:
Author: Text / computed for display
value: @UserName
Country: combobox / editable
City: dialog list / editable
Location: dialog list / editable
detail: text / editable
Configuration: RichText / Editable

HiddenFields:
showname: Text / computed for display
value: @Name([CN];Author)
From: Authors / Computed / Allow multiple values
value: @UserName : "[Creator]"

Buttons:
acsave: immer sichtbar
acclose: immer sichtbar
acedit: hide when --> Formel: !@UserName=From | !@IsMember("[creator]"; @UserRoles)

DB:
People, Server, Groups:
-Default- --> Editor ( keine Rolen )
Mein Name --> Manager ( Alle Rolen )

Rolen:
Creator
DBOwner
Developers

Sonstiges:
Enforce a consistent ACL across all replicas


Edit: Man... wieso geht es mit & ??? Jetzt geht es:
!(@UserName=From) & @IsNotMember("[Creator]"; @UserRoles)
!(@UserName=From) | @IsNotMember("[Creator]"; @UserRoles)

Cool danke erstmal. Ich weiss zwar nicht wieso das jetzt läöuft mit einem AND und nicht mit einem OR.

Jetzt habe ich aber direkt noch eine Frage:
Ich habe im Querysave folgenden Code:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
      'Created on 13.02.06 by someone
   Dim ThisDoc As NotesDocument
   Set ThisDoc = Source.Document
   'Checks the mandatory fields and stops saving if a field is empty
   If Source.FieldGetText("country") = "" Then
      source.GotoField("country")
      Messagebox "Country field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If
   Source.Close
End Sub

Das klappt auch soweit, dass wenn ich das Feld leer lasse kommt die Meldung, aber danach kommt ein Fehler: Cannot execute the specified command.
« Letzte Änderung: 20.02.06 - 13:36:50 von judicious »

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Problem mit Dokument Berechtigungen
« Antwort #22 am: 20.02.06 - 15:05:59 »
Das liegt jetzt an den logischen operatoren:
!(@UserName=From) & @IsNotMember("[Creator]"; @UserRoles)
=> @username != from & @isnotmember("[Creator]";@userroles)

!(@UserName=From) | @IsNotMember("[Creator]"; @UserRoles)
=> @username!=from | @IsNotMember("[Creator]"; @UserRoles)
=> @username=from &  @isMember("[Creator]"; @UserRoles)

Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Dokument Berechtigungen
« Antwort #23 am: 20.02.06 - 15:18:06 »
Kleine Anmerkung: Auf einmal wird Creator ja gross geschrieben ... Der vorherige Vergleich auf "[creator]" konnte dann auch nicht klappen.

Zum QuerySave: Ein Source.Close hat da aber nichts zu suchen.

Bernhard

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #24 am: 20.02.06 - 15:35:01 »
Kleine Anmerkung: Auf einmal wird Creator ja gross geschrieben ... Der vorherige Vergleich auf "[creator]" konnte dann auch nicht klappen.

Keine Angst das habe ich immer korrigiert ;)

Zum QuerySave: Ein Source.Close hat da aber nichts zu suchen.

Wenn ich das aber weglasse, dann kommt zwar der Fehler, speichern lässt sich das Dokument aber trotzdem
« Letzte Änderung: 20.02.06 - 15:40:46 von judicious »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Problem mit Dokument Berechtigungen
« Antwort #25 am: 20.02.06 - 15:54:29 »
Wenn das der Code im Querysave - Event ist, dann sollte das aber funktionieren.

Mit Continue = False wird das Speichern abgebrochen und mit Exit Sub wird die Ausführung des Events beendet.

Code
Sub Querysave(Source As Notesuidocument, Continue As Variant)
   'Created on 13.02.06 by someone
   Dim ThisDoc As NotesDocument
   Set ThisDoc = Source.Document
   'Checks the mandatory fields and stops saving if a field is empty
   If Source.FieldGetText("country") = "" Then
      source.GotoField("country")
      Messagebox "Country field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If
End Sub

Woran erkennst du denn, dass das Dokument gespeichert wird.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #26 am: 20.02.06 - 16:15:25 »
Sub Querysave(Source As Notesuidocument, Continue As Variant)
      'Created on 13.02.06 by someone
   Dim ThisDoc As NotesDocument
   Set ThisDoc = Source.Document
   'Checks the mandatory fields and stops saving if a field is empty
   If Source.FieldGetText("country") = "" Then
      source.GotoField("country")
      Messagebox "Country field is empty",  0 + 48, "Failure"
      Exit Sub
   End If      
   If Source.FieldGetText("city") = "" Then
      source.GotoField("city")
      Messagebox "City field is empty",  0 + 48, "Failure"
      Exit Sub
   End If   
   If Source.FieldGetText("location") = "" Then
      source.GotoField("location")
      Messagebox "Location field is empty",  0 + 48, "Failure"
      Exit Sub
   End If   
   If Source.FieldGetText("detail") = "" Then
      source.GotoField("detail")
      Messagebox "Detail field is empty",  0 + 48, "Failure"
      Exit Sub
   End If   
   If Source.FieldGetText("Description") = "" Then
      source.GotoField("Description")
      Messagebox "Description field is empty",  0 + 48, "Failure"
      Exit Sub
   End If   
End Sub



Das ist mein Code.
Woran ich das sehe, ich sehe das Dokument in den Views ;)

Edit: Mann mann mann, ich habe noch einen sehr spezielen Fehler :) Immer wenn ich die DB aufmache mit einem Doppelklick auf das Icon gehen gleich zwei Formulare mit auf. Aber komischerweise nicht immer, sondern so nach Lust und Laune ???
« Letzte Änderung: 20.02.06 - 16:17:10 von judicious »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Dokument Berechtigungen
« Antwort #27 am: 20.02.06 - 16:18:36 »
Und wo ist das Continue = False abgeblieben? Das Event heisst ja QUERYsave - gespeichert wird später - solange nicht Continue = False ist.

Bernhard

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #28 am: 20.02.06 - 16:25:11 »
Habe ich einfach rausgelassen weil sonst wieder der Fehler kommt: Cannot execute the specified command.

Um die anderen FUnktionen zu testen ist es einfacher wenn der Fehler nicht kommt ;)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Dokument Berechtigungen
« Antwort #29 am: 20.02.06 - 16:28:03 »
Vorhin war es doch noch Call Source.Close, was (logischerweise) den Fehler warf ...

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #30 am: 20.02.06 - 16:37:36 »
Ach so, nein sorry, das war mein Fehler. Es geht so wie es jetzt oben steht nicht.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Dokument Berechtigungen
« Antwort #31 am: 20.02.06 - 16:44:38 »
Jetzt wird es langsam unüberschaubar.
Wenn Du mit  dem "das was oben steht" Posting #26 meinst, dann funktioniert der Code dahingehend, dass beim ersten Zutreffen eines Vergleichs eine Meldung ausgegeben wird, und dann wird das Dokument gespeichert. Wie in #27 beschrieben.

Axels Posting #25 zeigt das gängige und funktionierende Verfahren.

Bernhard

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #32 am: 20.02.06 - 16:48:16 »
Axels Posting #25: Ja und wie soll ich das jetzt für mehrere Felder machen? So wie ich es in Posting #26 gemacht habe oder?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Problem mit Dokument Berechtigungen
« Antwort #33 am: 20.02.06 - 16:59:22 »
Axels Posting #25: Ja und wie soll ich das jetzt für mehrere Felder machen? So wie ich es in Posting #26 gemacht habe oder?

Genau. Nur musst du nach jeder Messagebox ein Continue = False einfügen.

Sub Querysave(Source As Notesuidocument, Continue As Variant)
      'Created on 13.02.06 by someone
   Dim ThisDoc As NotesDocument
   Set ThisDoc = Source.Document

   'Checks the mandatory fields and stops saving if a field is empty
   If Source.FieldGetText("country") = "" Then
      source.GotoField("country")
      Messagebox "Country field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If     

   If Source.FieldGetText("city") = "" Then
      source.GotoField("city")
      Messagebox "City field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

   If Source.FieldGetText("location") = "" Then
      source.GotoField("location")
      Messagebox "Location field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

   If Source.FieldGetText("detail") = "" Then
      source.GotoField("detail")
      Messagebox "Detail field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

   If Source.FieldGetText("Description") = "" Then
      source.GotoField("Description")
      Messagebox "Description field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

End Sub

Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #34 am: 20.02.06 - 17:06:35 »
Ja nur kommt der Fehler dann immer noch, es lässt sich zwar nicht speichern, aber der Fehler bleibt der selbe. Zurzeit habe ich etwa die 10te Version vom Code drin, aber der Fehler will und will nicht weg  :-[

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Dokument Berechtigungen
« Antwort #35 am: 20.02.06 - 17:09:18 »
Über welchen Fehler sprechen wir denn jetzt gerade? Und wo ist Dein Code?

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #36 am: 20.02.06 - 18:09:42 »
Das ist der Code:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
      'Created on 13.02.06 by someone
   Dim ThisDoc As NotesDocument
   Set ThisDoc = Source.Document

   'Checks the mandatory fields and stops saving if a field is empty
   If Source.FieldGetText("country") = "" Then
      source.GotoField("country")
      Messagebox "Country field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If     

   If Source.FieldGetText("city") = "" Then
      source.GotoField("city")
      Messagebox "City field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

   If Source.FieldGetText("location") = "" Then
      source.GotoField("location")
      Messagebox "Location field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

   If Source.FieldGetText("detail") = "" Then
      source.GotoField("detail")
      Messagebox "Detail field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

   If Source.FieldGetText("Description") = "" Then
      source.GotoField("Description")
      Messagebox "Description field is empty",  0 + 48, "Failure"
      Continue = False
      Exit Sub
   End If   

End Sub

Das ist der Fehler:
Cannot execute the specified command

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Problem mit Dokument Berechtigungen
« Antwort #37 am: 20.02.06 - 19:13:40 »
Wenn ist das so sehe und wenn das der gesamte Code ist, der im QuerySave-Event drin steht, dann kommt der Fehler nicht daher.

Hast du Teilmasken mit weiterem Code eingebunden?

Sind in den Feldern Eingabevalidierungen oder Eingabeumsetzungen enthalten?

Gibt's in anderen Events (u.a. PostSave) noch irgendwelchen Code?

Hast du auch schon mal den Debugger bemüht?

Fragen über Fragen, auf die wir eine Antwort brauchen um weiterhelfen zu können.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline judicious

  • Junior Mitglied
  • **
  • Beiträge: 53
Re: Problem mit Dokument Berechtigungen
« Antwort #38 am: 21.02.06 - 09:15:02 »
Ok, ich denke ich weiss wo der Fehler liegt, nur weiss ich nicht genau wieso, er ausgelöst wird!
Wenn ich CTRL + S drücke kommt der Promp, das Feld sei leer und fertig, drücke ich auf den Save Button, kommt auch der Prompt plus dem Fehler: Cannot execute the specified command.

Der Button hat folgende Formel:
@Do(@Command([FileSave]);@Command([EditDocument];0))

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit Dokument Berechtigungen
« Antwort #39 am: 21.02.06 - 09:24:03 »
FileSave wirft den Fehler, und gleichzeitig soll das Dokument in den Read Mode versetzt werden - das beisst sich natürlich.

Wozu überhaupt diese Kombination von @Commands? Das so erzeugte Verhalten muss ja der User nun nicht unbedingt als ergonomisch empfinden ...

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz