Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 12.09.03 - 20:03:04

Titel: Querymodechange umgehen
Beitrag 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
Titel: Re:Querymodechange umgehen
Beitrag von: ata am 12.09.03 - 20:08:05
... ja, das wäre der Weg...

ata
Titel: Re:Querymodechange umgehen
Beitrag von: TMC am 12.09.03 - 20:10:39
OK, danke, wollte nur sichergehen, dass es nicht doch was einfacheres gibt  :)

bye,
TMC
Titel: Re:Querymodechange umgehen
Beitrag von: ata am 12.09.03 - 20:11:43
... leider nicht - wäre mir zumindest nicht bekannt...

ata
Titel: Re:Querymodechange umgehen
Beitrag von: koehlerbv am 13.09.03 - 14:20:07
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
Titel: Re:Querymodechange umgehen
Beitrag von: TMC am 13.09.03 - 14:27:26
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
Titel: Re:Querymodechange umgehen
Beitrag von: koehlerbv am 13.09.03 - 14:43:18
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 ;-)
Titel: Re:Querymodechange umgehen
Beitrag von: TMC am 13.09.03 - 16:29:21
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

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
Titel: Re:Querymodechange umgehen
Beitrag von: koehlerbv am 13.09.03 - 20:03:32
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