Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 12.09.03 - 20:03:04
-
n'Abend,
gibt es eine Möglichkeit, das Querymodechange zu umgehen per Script/Formel?
Ich hätte nämlich gerne einen versteckten, nur für bestimmte User zugänglichen, Button, mit dem man das Doc bearbeiten darf.
Im Queryopen hab ich das Doc auch gesperrt...
OK, ich wüsste schon was:
- Im Querymodechange die Abfrage auf Feld XY, wenn = 1, dann Doc öffnen
- Bei Button-Klick (Kurzform, Doc muss natürlich geschlossen, wieder geöffnet etc. werden)
* ins UIDoc im Feld XY eine 1 schreiben
* Doc im Editmode(True) öffnen
Gibts was einfacheres oder muss ich das so machen?
TMC
-
... ja, das wäre der Weg...
ata
-
OK, danke, wollte nur sichergehen, dass es nicht doch was einfacheres gibt :)
bye,
TMC
-
... leider nicht - wäre mir zumindest nicht bekannt...
ata
-
Ich hoffe, ich habe Deine Frage nicht mißverstanden ... Dir geht es doch darum, daß nur bestimmte User ein Dokument bearbeiten dürfen - alle anderen dürfen dies nur im Lesemodus öffnen, oder ?
Dann kannst Du doch in PostOpen und in QueryModeChange der Maske zum Beispiel auf eine Rolle prüfen, und entsprechend des Ergebnisses EditMode auf false setzen. Den Edit-Button zeigst Du auch entsprechend der Role an.
Achtung dabei auf das Zusammenspiel von PostOpen und Wechsel des EditModes (im Script) - dies triggert dann QueryModeChange, wo dann auch die Fehlermeldung stehen sollte (falls sowas wie "Hehe, dös darfst' aber net !" gewünscht ist).
Auf diese Art und Weise brauchst Du nicht mit zusätzlichen Feldern zu hantieren.
Falls ich keinem Mißverständnis aufgesessen bin: Wenn Du weitere Fragen hast, sag' kurz an.
Bernhard
-
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
-
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 ;-)
-
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:
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
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
-
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