Domino 9 und frühere Versionen > Entwicklung
Querymodechange umgehen
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