Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mariab am 20.02.08 - 09:44:42

Titel: Prüfen ob Dokument im Editiermodus ist
Beitrag von: mariab am 20.02.08 - 09:44:42
Habe in einer Maske eine Schaltfläche zum Löschen erstellt. Drückt der Benutzer auf die Schaltfläche, so sollten die entsprechenden Felder ausgefüllt werden. In der Ansicht prüfe ich dann diese Felder und zeige das Dokument an wenn die Felder leer sind.
Das Problem habe ich mit der Prüfung ob das Dokument im Edit-Mode ist oder nicht. Kann der Benutzer das Dokument nicht editieren, so sollte ihm die Meldung erscheinen, dass er dieses Dokument nicht löschen kann.


Code
Ergebnis :=@Prompt([YesNo]; "Eintrag löschen?"; "Soll der ausgewählte Eintrag gelöscht werden?");
@If(Ergebnis = 1;
@Do(
	@Command([EditDocument];"1");
	@If(@Command([EditDocument]) = "1";
		@Do(
			@SetField("Loesch";"gelöscht");
			@SetField("LoeschVon";@UserName);
			@SetField("LoeschAm";@Now)
				);
		@Prompt([Ok];"Achtung!";"Sie können diesen Eintrag nicht löschen") & @Return(null)
			));
@Return(null))
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: Glombi am 20.02.08 - 10:57:09
@If(@Command([EditDocument]) = "1";
ersetzen durch
@If(@IsDocBeingEdited;

Andreas
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: mariab am 20.02.08 - 11:25:21
Habe nun die Änderung mit @If(@IsdocBeingEdited;...  gemacht.
Ist das Dokument nicht im Editiermodus, so erscheint die Meldung "Sie können den Eintrag nicht löschen", klicke ich nochamls auf die Schaltfläche funktioniert es einwandfrei. Sieht fast so aus als ob Notes nicht ganz mitkommt, bzw zuerst das Prompt ausführt und dann erst das Dokument in den Edit-Mode switcht.
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: Fineas am 22.02.08 - 14:19:25
Hallo mirab,

versuch mal damit:

@If( @IsMember(@Name([CN];@UserName);@Author);
   @Do(
      Ergebnis :=@Prompt([YesNo]; "Eintrag löschen?"; "Soll der ausgewählte Eintrag gelöscht werden?");
         @If(Ergebnis = 1;
            @Do(
               @Command([EditDocument]; "1");
               @SetField("Loesch";"gelöscht");
               @SetField("LoeschVon";@UserName);
               @SetField("LoeschAm";@Now)
            );
         @Return(null)
         )
      );
   @Prompt([Ok];"Achtung!";"Sie können diesen Eintrag nicht löschen") & @Return(null)
)

Die Formel kann man je nach Einsatzbedarf noch vereinfachen. Aber so tut es auf Grundlage der Beschreibung erstmal.

Wesentlich eleganter wäre es allerdings das Löschen über eine Hide-When auf der Schaltfläche nur im Editmode zuzulassen.

Gruß, Fineas.
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: koehlerbv am 22.02.08 - 14:27:55
@Author ist kritisch zu sehen - es wird nur auf das erste Item mit IsAuthors = True zurückgegriffen. Wenn gar kein entsprechendes Item vorhanden ist, funktioniert's natürlich auch nicht ...

Bernhard
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: Fineas am 22.02.08 - 15:20:08
Mhmm. Stimmt auffällig.

Dann einfach ohne die Prüfung. Im Ergebnis gibt es dann keine Fehlermeldung.

Ergebnis :=@Prompt([YesNo]; "Eintrag löschen?"; "Soll der ausgewählte Eintrag gelöscht werden?");
         @If(Ergebnis = 1;
            @Do(
               @Command([EditDocument]; "1");
               @SetField("Loesch";"gelöscht");
               @SetField("LoeschVon";@UserName);
               @SetField("LoeschAm";@Now)
            );
         @Return(null)
         )

Wenn man irgendwie einen Fehler provozieren und abfangen könnte, wäre das sicher gangbar - nur leider wirft @Command([EditDocument]; "1"); keinen solchen.

Gruß, Fineas!
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: HH am 23.02.08 - 14:00:33
Für diesen Fall nicht getestet, aber @Commands haben auch einen Rückgabewert:

Return value
Number.
1 if the @command executes successfully
0 if the @command does not execute successfully

Schau mal, was ein @if( @command([EditDocument];"1") ... liefert, wenn keine Autorrechte gegeben sind.

Hubert
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: Fineas am 25.02.08 - 08:40:30
Hallo Hubert,

interessante Anregung - tut aber leider nicht. Egal ob in den Editmode gewechselt wird oder nicht, bleibt der Rückgabewert von @command([EditDocument];"1") gleich. Schade.

Gruß, Fineas!
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: LN4ever am 25.02.08 - 20:55:24
Daß der Rückgabewert für dich, der du in dem Dokument in den Edit-Modus wechseln kannst, gleich bleibt, ist klar. Aber wie verhält es sich bei dem Benutzer, der ein Dokument nicht editieren kann? Dort muß das Kommando UNSUCCESSFUL enden - und dann ist der Rückgabewert normalerweise ein anderer. Und das ist es doch, was du suchst.

Gruß

Norbert
Titel: Re: Prüfen ob Dokument im Editiermodus ist
Beitrag von: Fineas am 26.02.08 - 10:34:00
Hallo Norbert,

ich habe es keiner Erwähnung für wert gehalten: selbstverständlich habe ich beide Konstellationen getestet (Client 6.5.5). Offenbar wird @command([EditDocument];"1") auch dann successfully ausgeführt, wenn es mangels Berechtigung zu keinem Wechsel in den Editmode kommt.

Gruß, Fineas!