Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: FrankLU am 24.08.16 - 17:25:16

Titel: Probleme mit @SetDocField im QueryClose im Datenbankscript
Beitrag von: FrankLU am 24.08.16 - 17:25:16
Hallo Mitentwickler!

Ich habe eine Datenbank entwickelt, in der die Mitarbeiter einer Abteilung durch Klicken auf einen von mehreren Buttons in der Aktionsleiste einer Ansicht ein Dokument erzeugen, das bekannt gibt, welcher Einzeltätigkeit Sie im Moment nachgehen. Natürlich gibt es auch einen "Ende"-Button, der das zuvor erzeugte Dokument mit einem Ende-Datum und einem Status versieht (siehe Anhang).

Es kann für jeden MA nur ein "aktuelles" Dokument geben. Klickt ein MA ein zweites Mal auf einen der Buttons, wir das erste Dokument "Beendet" und ein neues Dokument erzeugt. Jeder MA sieht nur sein Dokument. Die Teamleiter sehen die Dokumente aller MAs, daher die Kategorisierung.

Soweit funktioniert auch alles gut. Nun gibt es aber immer wieder Fälle, wo ein MA die Datenbank schließt, um in die Pause oder nach hause zu gehen, ohne vor dem Schließen der Datenbank auf den "Ende"-Button geklickt zu haben. Das versaut natürlich jegliche Statistik. Daher wollte ich per Formelbefehl im QueryClose der Datenbank das Dokument mit einem Ende-Datum und einem Status versorgen.
Leider klappt das nicht.

Code
uname := @Name([CN];@UserName);
@If(@IsError(@DbLookup("":"NoCache";"";"ViewAbsMA";uname;1;[ReturnDocumentUniqueID]));
   @Prompt([Ok]; "Test 0"; "nichts");
   @Do(
      docUID := @DbLookup("":"NoCache";"";"ViewAbsMA";uname;1;[ReturnDocumentUniqueID]);
      @Prompt([Ok]; "Test 1"; @Text(docUID));
      @Prompt([Ok]; "Test 2"; @GetDocField(@Text(docUID); "Grund"));
      @SetDocField(@Text(docUID); "Ende"; @Now);
      @SetDocField(@Text(docUID); "Status"; 90);
   )
);

Für Testzwecke habe ich mal die @Prompts im Code belassen.
Beim Schließen der Datenbank wird die DocUID festgestellt und angezeigt; das klappt und die DocUID stimmt.
Aber schon das Auslesen des Felds "Grund" klappt nicht; der Prompt wird gar nicht erst angezeigt.
Das Setzen der Feldwerte klappt auch nicht.

Was mache ich falsch?

Grüße aus der Pfalz!
Frank
Titel: Re: Probleme mit @SetDocField im QueryClose im Datenbankscript
Beitrag von: Tode am 24.08.16 - 17:52:51
Das ist ein typischer Fall, wo man mit Formel nicht weiterkommt. Der Hilfetext zu @GetDocField besagt z.B.:

"The document must reside in the current database."...

Möglicherweise ist im QueryClose der Context schon weg, und Du bist nicht mehr in der "current database".
Du wirst hier wohl um ein paar Zeilen Lotusscript nicht drumrum kommen...
Titel: Re: Probleme mit @SetDocField im QueryClose im Datenbankscript
Beitrag von: FrankLU am 25.08.16 - 14:02:24
Danke für die Antwort, Torsten. Ich hatte sowas schon vermutet, finde es trotzdem merkwürdig. Ich habe nirgends in der Hilfe einen Hinweis gefunden, dass mitten im QueryClose ein "PostClose"-Fall eintritt, nur den Hinweis: "Wird vor dem Schließen der DB ausgeführt". Aber gut...

Ich habe die Formal jetzt in das QueryClose der Ansicht gepackt. Und da funktioniert es problemlos.

Danke für die Hilfe!

Grüße
Frank