Domino 9 und frühere Versionen > Entwicklung

Querymodechange umgehen

<< < (2/2)

TMC:
Hi Bernhard,

ich will wirklich alle aussperren (also auch z.B. mich :-)

Das Dok darf dann nur wie angegeben über einen Button bearbeitet werden.

Der Button wiederum hat eine Hide-When-Formel; dieser Button wird nur angezeigt, wenn im Profildokument ein Feld ein bestimmtes Merkmal hat.

Hört sich jetzt vielleicht umständlich an, aber das ist Teil einer Anforderung.
Das ganze muss ich natürlich noch dokumentieren, sonst blickt ggf. ein Kollege in 2 Jahren überhaupt nicht mehr durch :-)

Grüße an den "Zuagroasten" Bayern  :)

TMC

koehlerbv:
Mein Vorschlag mit den Rollen war nur ein Beispiel. Du kannst natürlich genauso gut einen Wert aus einem ProfileDoc ziehen oder oder oder ...

Du kannst also den gleichen Algorithmus, den Du für Deinen Buhtong einsetzt, auch in PostOpen und QueryModeChange einsetzen. Ist die geforderte Bedingung nicht gegeben, setzt Du EditMode auf False.

Beste Grüsse retour vom
Zuagroasten ;-)

TMC:
Hi Bernhard,

Dein Tipp in Ehren, aber ein Button alleine wird hier bevorzugt. (es gibt noch weitere Buttons, die sich auf's selbe HideWhen beziehen...... - das jetzt zu erläutern würde glaub ich den Rahmen sprengen.).

Hier jedenfalls mein Reopen-Script im Button:

--- Zitat ---Sub Click(Source As Button)
'#####################################################   
'Script ist nötig, weil in Querymodechange und Queryopen
'per Default das Dokument nicht in Edit-Modus gesetzt werden darf.   
'Daher muss Feld querymodechange gesetzt werden,
'dann Doc geschlossen und wieder geöffnet, damit die
'Querymodechange-Abfrage greift
'#####################################################
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument    
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim unid As String
   
   Set db = session.CurrentDatabase
   Set uidoc = uiws.CurrentDocument
   Set doc = uidoc.Document
'************ STEP 1: Feld setzen und Doc schließen ***************
   'Setze UNID-Variable
   unid = doc.UniversalID
   'Setze Feld
   doc.querymodechange= "EditErlaubt"   
   'Speichere Doc   
   Call doc.save(False, False)   
   'Schließe UIDOC
   Call uidoc.close
   
   '************ STEP 2: Doc wieder herholen und im Editmode öffnen ***************
   Set doc = db.GetDocumentByUNID(unid)
   Set uidoc = uiws.EditDocument(True , doc)
   Call uidoc.save
End Sub
--- Ende Zitat ---

Ist zwar nicht die Traum-Lösung, aber funktioniert.
Im Querysave leere ich das Feld Querymodechange wieder. Im Feld Querymodechange (=berechnet beim Anlegen) steht "EditErlaubt". Sonst gibts Probleme beim Erstellen eines neuen Docs.


Nochmal danke an die Helfenden.

TMC

koehlerbv:
Du hast natürlich vollkommen recht - es ist keine "Traum-Lösung" ...
Und "ein Button alleine" stimmt ja wohl gar nicht, und unterlaufen kann das ganze auch noch.
Viel Spaß also !

Bernhard

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln