Das Notes Forum
Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: HarryB am 29.03.05 - 11:50:39
-
Hi Folks,
in einer Datenbank ändere ich den Namen einer Kategorie. Davon abhängig müssen zuerst Personendokumente und danach Inhaltsdokumente aktualisiert werden.
Beispiel:
1. Kategorie alt: Abteilung 1; Kategorie neu: Abteilung 2
2. Personendokumente aller Personen, die Abteilung 1 angehören, auf Abteilung 2 ändern.
3. Inhaltsdokumente, welche den Personen aus Abteilung 1 zugeordnet sind entsrechend von Abteilung 1 auf Abteilung 2 ändern
Schritt 3 wird durchgeführt, indem auf die in Schritt 2 geänderten Dokumente zugegriffen wird und die geönderten Daten ausgelesen werden.
Aber: es klappt nicht. Obwohl in Schritt 2. die Dokumente korrekt gespeichert werden, werden diese nicht korrekt in Schritt 3 ausgelesen. Die Inhaltsdokumente werden inhaltlich nicht geändert.
Wenn ich Schritt 3 in einer gesonderten Funktion wiederhole, klappt es einwandfrei.
Ich habe keine Erklärung dafür. Kann das jemand von euch erklären?
Viele Grüße
Harry
-
Hoppla,
ich bin hier inhaltlich im falschen Board gelandet. Wäre einer der Mods so freundlich, das Thema zur Entwicklung zu schieben?
Viele Dank
Harry
-
Schritt 4: Wie geht das Ganze denn ? Agent, Schaltfläche, Script, Formel ?
Wir können leider (nocht) nicht hellsehen....
-
Ja, du hast recht.
Das ganze basiert auf Script und wird im PostSave Event der Kategorie ausgeführt. Ich will das ganze mal deutlicher Beschreiben:
Dokument 1: Fakultät (zum Beispiel Wiwi)
Dokument 2: Person (einer Faultät zugeordnet)
Dokument 3: Veröffentlichung (einer oder mehrerer Personen zugeordnet und damit auch den jeweiligen Fakultäten)
Wird nun der Name der Fakultät geändert, müssen die Zuordnungen in Dokument 2 und 3 aktualisiert werden. Das passiert im PostSave des Dokumentes vom Typ 1.
Die Aktualisierung der Dokumente vom Typ 2 wird direkt durchgeführt und klappt einwandfrei.
Die Aktualisierung der Dokumente vom Typ 3 wird indirekt durchgeführt (es wird eine Liste der zugeordneten Personen erstellt und die Fakultät aus den Personendokumenten ausgelesen). Obwohl in Schritt 2 die aktualisierten Dokumente bereits gespeichert wurden, steht diese Änderung in Schritt 3 nicht zur Verfügung. In den Dokumenten von Typ 3 steht nach der Aktion noch die alte Fakultät, nicht die neue.
Wenn die dieselbe Funktion, welche die Fakultät in den Dokumenten von Typ 3 aktualisiert, in einer externen Funktion nach dem PostSave aufrufe, werden die Einträge korrekt aktualisiert.
Viele Grüße
Harry
-
T'schuldigung, aber hellsehen kann ich immer noch nicht.
Da Du aber keine Details preisgibst, kann ich Dir nicht helfen.
-
Hallo Klaus,
wärst du so freundlich mal zu sagen, was du genau benötigst? Der Code an sich ist recht lang, ich weiss nicht ob es sinnvoll ist diesen hier einfach zu posten.
Danke
Harry
-
Tja, dann hilft wohl nur noch Debugger....
-
Vielen Dank für deine umfassende Hilfe. Du gehst ja nicht mal im Ansatz auf meine Postings ein. :-\
Viele Grüße
Harry
-
Wie suchst Du die geänderten Dokumente im Schritt 3?
Falls Du die über eine Ansicht suchst, musst Du den Ansichtsindex neu aufbauen. Dies kannst Du ereichen über "NotesView.Refresh" oder das Objekt neu zuweisen.
-
Vielen Dank für deine umfassende Hilfe.
Wie soll ich Dir helfen, wenn ich überhaupt nicht weiss, was da abgeht ?
Ich habe keine Lust, da im Nebel zu stochern.
Wenn's per Script geht, dann Debugger anwerfen und schauen, warum und wo das Script aussteigt.
-
Hi diali,
den Ansichtenindex neu aufzubauen hat nicht geholfen.
@klauss
Mir ist immer noch nicht klar, welche Informationen du genau brauchen würdest. Wie lang darf ein Script sein, wenn man es hier einstellt. Das Problem war, dass das Script durchläuft und nicht aussteigt. Der Debugger hätte an der Stelle nicht geholfen, wenn man nicht jeden Schritt einzeln durchläuft.
Ich habe das Problem dennoch selbst gefunden: in der Subroutine, die ich aufrufe, wird das in Schritt 3 zu aktualisierende Dokument nicht gespeichert. Das ist auch Absicht, da diese Routine an einer anderen Stelle aufgerufen wird, wo das Dokument nicht sofort gespeichert werden soll. Die Routine ist ein paar Monate alt, so dass ich das nicht mehr im Kopf hatte.
Das Problem ist aber nun behoben.
Viele Grüße
Harry