Autor Thema: Problem mit querymodechange  (Gelesen 1837 mal)

Offline jens1979

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Problem mit querymodechange
« am: 23.11.07 - 11:15:19 »
Hallo,

ich habe ein kleines Problem mit meiner Datenbank. Ich möchte das ein Dokument nachdem es angelegt wurde nicht mehr bearbeitbar ist. Dies hab ich einfach mit einem versteckten Feld ("bearbeitungsmodus"="ja" oder "nein") und einer Formel im Querymodesave

Code
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
	If Not Source Is Nothing Then
		If Source.Document.bearbeitungsmodus (0) = "1" And Not Source.EditMode Then
			Msgbox "Das Dokument wurde freigegeben und ist nicht mehr bearbeitbar.", 48, "Hinweis"
			continue = False
		End If
	End If
End Sub

gemacht. Soweit funktioniert das auch alles, aber nun bekomme ich die Anforderung das das an dem Dokument doch noch Änderungen vorgenommen werden sollen, allerdings ausschließlich über Aktionen. Wie kann ich das Realisieren? Kann ich irgendwie aus dem Script der Aktion eine Variable an das QueryModeChange übergeben die ich abfrgae und dann "continue" auf "true" setze?

Danke schonmal für eure Unterstützung,

Jens

Driri

  • Gast
Re: Problem mit querymodechange
« Antwort #1 am: 23.11.07 - 12:09:37 »
Man könnte die Felder einfach im Background-Dokument schießen und dann das Dokument neu im UI öffnen.


Noch ein Hinweis : Das Abfangen des EditMode ist keine echte Sicherheit gegen Änderungen. Der Hobby-Progger unter den Usern könnte sich einfach einen Agent basteln und damit Feldwerte ändern.

Offline jens1979

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Problem mit querymodechange
« Antwort #2 am: 23.11.07 - 12:18:04 »
Danke erstmal für die schnelle Antwort ...

Zitat
Noch ein Hinweis : Das Abfangen des EditMode ist keine echte Sicherheit gegen Änderungen. Der Hobby-Progger unter den Usern könnte sich einfach einen Agent basteln und damit Feldwerte ändern.

Das sollte nicht das große Problem sein ... es ist eher ne Sicherung damit keine Fehler passieren. Und die Spielkinder unter den Usern haben eh nur Lese-Rechte ;)

Zitat
Man könnte die Felder einfach im Background-Dokument schießen und dann das Dokument neu im UI öffnen

Okay das hab ich jetzt irgendwie nicht so ganz verstanden. Welche Felder soll ich schließen? Das Dokument wird über die Aktion eigentlich nur mit ein Paar Flags versehen und als neue Version gespeichert.

Gruß Jens


Offline MatthiasH

  • Frischling
  • *
  • Beiträge: 2
  • Geschlecht: Männlich
Re: Problem mit querymodechange
« Antwort #3 am: 23.11.07 - 12:36:10 »
Am einfachsten in der Ansicht durch eine Aktion für gewählte Dokumente das Feld "bearbeitungsmodus" ändern, somit zieht Dein QueryModeChange nicht mehr. Du kannst dies ja dann auch in dem Dokument protokollieren lassen wer den Button betätigt hat.

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 querymodechange
« Antwort #4 am: 23.11.07 - 12:39:51 »
Okay das hab ich jetzt irgendwie nicht so ganz verstanden. Welche Felder soll ich schließen? Das Dokument wird über die Aktion eigentlich nur mit ein Paar Flags versehen und als neue Version gespeichert.

Du kannst keine Felder schließen, sondern nur Dokumente.

Was er meint ist, dass du mit Backendmethoden (NotesDocument-Klasse) die entsprechenden Felder füllst und das Dokument im Frontend schließt und wieder öffnest.

Unser Forenmitglied ata (Anton Tauscher) hat da mal eine Funktion dafür gebaut. Suche hier im Forum mal nach Reopen.


Axel


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

Offline jens1979

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Problem mit querymodechange
« Antwort #5 am: 23.11.07 - 14:55:40 »
Danke für die Antworten.

Aber irgendwie steh ich heute gewaltig auf der Leitung  :-\

Das Reopen Script hab ich mir angesehen und so etwas ähnliches (nur nicht ganz so kompakt  :-[ ) hab ich auch schon an einer anderen Stelle eingebaut. Aber ich versteh noch nicht so ganz wie mir das bei meinem Problem helfen kann.

Wenn mein Feld "bearbeitungsmodus" auf "nein" steht hab ich doch keine Möglichkeit das Document in den Edit-Modus zu setzen? Da bringt es mir doch auch nix das Doc zu schließen und neu zu öffnen, oder hab ich da in der Funktion was total schräg gelesen.
Ich bin momentan noch dabei mich so richtig mit LS anzufreunden, von daher verzeiht mir bitte die ganze Nachfragerei :)

Jens

Offline jens1979

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Problem mit querymodechange
« Antwort #6 am: 23.11.07 - 16:07:08 »
Hab jetzt einen Beitrag von TMC gefunden der sich mit einem ähnlichen Problem befasst und es jetzt mit dem schließen und wieder öffnen hinbekommen.

Eine Frage bleibt mir allerdings noch, warum kann ich mit der Klasse NotesDocument ein Feld ändern ohne das Document vorher im Edit-Mode zu haben? Weil es ne Backend-Klasse ist?

... ich muss noch viel lernen

Gruß Jens

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Problem mit querymodechange
« Antwort #7 am: 23.11.07 - 17:21:57 »
Hi,

Das NotesDocument ist Backend, und hierfür gelten die ganzen QueryOpen, Postopen, QueryModeChange nicht.
Die gibts nur im NotesUIDocument (frontend, "was der User sieht").
Und insofern wirken sie auch nur dafür.

Noch was anders, was macht dein QueryOpenDocument, ich hoff doch zumindest:
Code
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
	if not Isnewdoc then 
		if mode=1 then 
			continue = false
		End if
	End if
End Sub
Ansonsten kannst Du dein Dokument aus der Ansicht direkt in den Bearbeitungsmodus setzen, z.B. durch [Strg+B] (deutsch) bzw. [Strg+E] (englisch)
oder wenn eine Aktion @Command([EditDocument];1) da ist.
Das ist dann nämlich kein "ModeChange"!

Gruss, Pete(r)
pete(r)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit querymodechange
« Antwort #8 am: 23.11.07 - 17:27:14 »
Pete hat Recht! Das ist in keinster Weise ein sicheres Verfahren. Warum das so ist und warum Du ggf. sogar das PostRecalc-Event einbeziehen musst, findest Du in diesem BP-Artikel (sorry, dass ich da auf einen eigenen Beitrag verweise): [LotusScript]: EditMode für bestimmte Dokumente verwehren

Ich betone das hier nochmals: Im BP-Artikel geht es um "Krücken", die nur in absoluten Ausnahmefällen sinnvoll sein könnten. Dir rate ich auf jeden Fall, das Konzept Deiner Applikation zu überdenken und vor allem Autorenfelder bzw. Items mit gesetzter IsAuthors-Property in Betracht zu ziehen.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz