Autor Thema: Probleme mit @SetDocField im QueryClose im Datenbankscript  (Gelesen 1965 mal)

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
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
« Letzte Änderung: 26.09.16 - 15:52:54 von FrankLU »
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Probleme mit @SetDocField im QueryClose im Datenbankscript
« Antwort #1 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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
Re: Probleme mit @SetDocField im QueryClose im Datenbankscript
« Antwort #2 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
« Letzte Änderung: 25.08.16 - 14:04:15 von FrankLU »
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz