Autor Thema: Aktualisierung von Werten im Parent Document  (Gelesen 7220 mal)

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Aktualisierung von Werten im Parent Document
« am: 05.06.13 - 11:40:04 »
Hallo zusammen,

wer kann mir helfen die Lösung für mein folgendes Problemchen zu finden???

Es gibt in meiner DB Dokumente vom Typ A. Zu jedem A gibt es mehrere Antwortdokumente namens B. In A möchte ich berechnete Anteile aus den B-Dokumenten anzeigen. Mein Algorithmus ist:

FORALL (B)
  A.Feld1 += B.Feld1

Ich gehe so vor, dass ich beim Speichern eines Dokuments B das Parent-Doc A suche und darin alle Antwort-Dokumente durchlaufe.

Problem: Die Felder in Dokument A werden nicht aktualisiert.

Hier die relevanten Code-Teile:

   Dim produktDocID As String
   Dim produktDoc As NotesDocument
        Dim zutatDoc As NotesUIDocument 'ist Parameter aus der Querysave-Methode

   produktDocID = zutatDoc.Document.Parentdocumentunid
   Set produktDoc = session.Currentdatabase.GetdocumentbyUnid(produktDocID)

   Set responseDoc = produktDoc.Responses.GetFirstDocument()
      
   For i=0 To produktDoc.Responses.Count-1
      Call produktDoc.ReplaceItemValue("anteilGK", anteilGK+anteilZutat)
      Set responseDoc = produktDoc.Responses.GetNextDocument(responseDoc)
   Next

Mir ist klar, dass es sich um eine teilweise Vermengung von Front- und Backend-Funktionalität handelt. Allerdings benutze ich das Frontend nur lesend und arbeite auf den Feldern (bzw. Items) dann im Backend.

Danke für eure Gedanken!!


Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #1 am: 05.06.13 - 11:50:15 »
Hallo,

Nur mal so ganz einfach gefragt.

Speicherst Du auch irgendwann das produktDoc? (ich nehme aus Deinen Code-Schnipseln heraus an, dass es sich hierbei um das Haupt-Dokument handelt)


Andreas

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: Aktualisierung von Werten im Parent Document
« Antwort #2 am: 05.06.13 - 11:54:03 »
Mal so ne Idee auf die Schnelle.

Das mit dem Ermittlen und Durchlaufen der Antwortdokumente ist soweit schon richtig. Ich würde aber die Werte aus den Antwortdoks in einer Variable aufsummieren und erst wenn alle Antwortdoks durchlaufen sind den Wert dann ins entsprechende Feld im Hauptdokument übernehmen.

... und dsann natürlich das Speichern nicht vergessen.

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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #3 am: 05.06.13 - 11:59:55 »
... Ich würde aber die Werte aus den Antwortdoks in einer Variable aufsummieren und erst wenn alle Antwortdoks durchlaufen sind den Wert dann ins entsprechende Feld im Hauptdokument übernehmen...
Genau, und natürlich nur dann, wenn sich der Wert der Variablen vom Wert im Hauptdokument unterscheidet.

Stichwort: Unnötiges Speichern vermeiden

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Aktualisierung von Werten im Parent Document
« Antwort #4 am: 06.06.13 - 09:31:28 »

...Oh nein!!! Tatsächlich war es nur der fehlende Save-Befehl.
 :o :o :o

Und, klar - die Summierung macht Sinn! Danke für den Tip

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Aktualisierung von Werten im Parent Document
« Antwort #5 am: 06.06.13 - 11:27:34 »
Ok, das Dokument kriegt die Werte nach dem save. Ein Problem hab ich noch: Ist das Dokument im Hintergrund geöffnet, aktualisiert sich die Anzeige natürlich nicht automatisch. Wie kann ich dem geöffneten A-Dokument sozusagen ein refresh geben? Die Änderungs-Aktion läuft ja im B-Dokument...

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: Aktualisierung von Werten im Parent Document
« Antwort #6 am: 06.06.13 - 12:27:34 »
Hier mal eine Lösung aus "der hohlen Hand"   ;)

Du brauchst ein Handle auf das geöffnete Hauptdokument und dann kannst du es aktualisieren.

...
Set produktuidoc = workspace.EditDocument(True, produktDoc,,,, False)
Call produktuidoc.Refresh
....

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

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #7 am: 06.06.13 - 12:33:00 »
@Axel,
Ich glaube ein Refresh reicht hier nicht.

Eher muesste wohl ein kompletter Reload des geoeffneten Dokumentes
erfolgen.
=> siehe hierzu auch die Designer-Hilfe


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #8 am: 06.06.13 - 13:02:47 »
Das ist immer ein grundsätzlich vorhandenes Problem. Wer hat das Dokument im Hintergrund auf? Der gleiche User? Andere User? Mehrere gleichzeitig? Bearbeiten die womöglich das Dokument zeitgleich? Was passiert, wenn mehrere Mitarbeiter Antwortdokumente erstellen/ändern? Solch eine Aktualisiere-das-Hauptdokument-Aktionen sind sehr anfällig für Replizierkonflikte und nicht stimmende Daten.

Ich bin mir nicht sicher, ob wir das gleiche Thema nicht neulich schon einmal diskutiert hatten. Eventuell also doppelt: Für mich die Kernfrage ist bei solchen Anliegen, wird die Information im gespeicherten Dokument wirklich benötigt? Falls nicht, würde ich die Summen berechnet zur Anzeige in der Maske rechnen lassen. Keine Aktualisierung durch gespeicherte Antwortdokumente, keine Replizierkonflikte, nur ggf. kleine Einbußen in der Performance beim Öffnen der Dokumente. Natürlich kann man im klassischen Notes Felder berechnet zur Anzeige nicht in Ansichten anzeigen lassen. Im Falle von Summen kann ich die aber in Kategorien zusammenrechnen lassen und benötige die deshalb auch nicht zwingend im Hauptdokument.


Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Aktualisierung von Werten im Parent Document
« Antwort #9 am: 07.06.13 - 10:25:12 »
Hallo zusammen,

Refresh und Reload führt zu abstrusen Fehlermeldungen. Leider bekomme ich auch ein Problem, wenn ich mir vor dem Setzen der Werte per EditDocument den Handle auf das UIDokument hole - Fehlermeldung à la "Dokument nur editierbar im Edit-Modus"...?? Seltsam!!

Peter, du hast schon Recht - ich würde die Information sehr gerne in der Maske rechnen. Das Problem ist nur, zu welchem Zeitpunkt. Immer wenn ein Dokument vom Typ B sich ändert oder neu dazu kommt muss ich die Maske A ja aktualisieren, sonst stimmt die Anzeige nicht. Lässt sich in Maske A meines Wissens nur durch einen Refresh-Button realisieren?! Oder eben in Maske B beim Speichern. Dann hab ich aber immer das Problem mit dem Zugriff auf A. Es geht ja schon damit los, dass ich - falls der Algorithmus direkt in A laufen soll - vom UIDokument aus nicht die Antwortdokumente durchlaufen kann - ODER?

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #10 am: 07.06.13 - 10:35:12 »
Hallo,

Nur wirst Du in dieser Konstellation immer Probleme bekommen.

Bsp.
User A oeffnet DokA und liest nur.
User B oeffnet ebenfalls DokA und bearbeitet dieses und erstellt ein neues Response-Dok zu A.
User B speichert das neue Response-Dok und koennte somit Dok A auch noch mit aktualisieren.
Nun weiss User A aber nicht, dass User B Aenderungen vorgenommen hat und bearbeitet seinerseits Dok A und speichert dieses (d.h. er will es)

Also, wie gesagt.
Du wirst in diese Konstellation immer auf Probleme stossen.


Andreas

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #11 am: 07.06.13 - 10:39:12 »
Will also heissen.

Damit Du ein kleines Mass an Sicherheit bekommst, muesstest Du sicherstellen, dass die Db
auf NUR einem Server laeuft und das ein Dokument, egal welches, auch nur von 1 Benutzer geoeffnet werden kann und sei es nur zum Lesen.

Ein anderer User muesste sofort mit einer 'eigenen' Fehlermeldung daran gehindert werden,
ein Dokument zu Oeffnen, wenn es bereits duch einen andern Benutzer geoeffnet ist.


Andreas

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Aktualisierung von Werten im Parent Document
« Antwort #12 am: 07.06.13 - 10:41:53 »
Also ich habs jetzt mal so gelöst. Es gibt einen Refresh-Button im Dokument A, der zwar durch die Antwortdokumente per NotesDokument iteriert (nur lesend) und dann im NotesUIDokument die Werte ändert. Vor der Aktion wird ein Save durchgeführt auf dem CurrentDocument. Funktioniert fürs erste. Falls es für den Refresh-Button einen würdig-userfreundlichen Ersatz gibt freue ich mich über Anregungen!

ascabg, Danke für den Hinweis auf die Multi-User-Problematik! Ein Dokument vom Typ A sollte in dieser Konstellation echt nur von einem User geöffnet werden können. Das mache ich!

DANKE für eure Hilfe soweit...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #13 am: 07.06.13 - 10:55:29 »
"... sonst stimmt die Anzeige nicht ..."

Wo, in einer Ansicht oder im Dokument?

Willst/musst Du die Daten in der Ansicht anzeigen, müssen sie im Dokument stehen, d.h. im Dokument gespeichert sein (bei Änderungen in den Antworten also zu aktualisieren). Eine Ausnahme stellt die Summierung über eine Kategorie dar, falls das möglich ist, dann kannst Du darauf verzichten.

Habe mal ein simples Beispiel erstellt, wie soetwas aussehen könnte. Die Kategoriesierung erfolgt hier über den Namen des Rezeptes, der in allen Zutatendokumenten enthalten sein muss. Die Antwortdokumente dürfen hierbei nicht hierarchisch angezeigt werden.

In der Kategorie werden die Summen automatisch errechnet, eine Änderung einer Zutat ändert auch die Ansicht. Wenn die Information zusätzlich im geöffneten Dokument sichtbar sein soll, musst du sie mittels einer Formel in einem Feld berechnet zur Anzeige (das erfolgt dann immer beim Öffnen des Dokuments, auch im Lesemodus) errechnen.

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Aktualisierung von Werten im Parent Document
« Antwort #14 am: 07.06.13 - 11:13:22 »

Peter, du hast natürlich Recht - wenn es nur die Summen wären. Ich habe zwei zu berechnende Werte, ein mal sind es Summen aus Dokumenten B und ein mal berechnet sich der Wert in Abhängigkeit von anderen Werten. Drum reicht mir leider die Summenanzeige der Ansicht an der Stelle nicht aus...

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Aktualisierung von Werten im Parent Document
« Antwort #15 am: 07.06.13 - 11:24:19 »

Hier noch ein neues kleines Problemchen meiner Abhängigkeiten: Maske A hat eine eingebettete Ansicht, welche die Antwortdokumente B anzeigt. Immer beim ersten Anlegen eines Antwortdokuments B wird dieses nicht in der eingebetteten Anischt angezeigt, erst nach Schließen&Öffnen des Dokuments A. Ab dem zweiten funktioniert es dann!!!! Muss ich das verstehen?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #16 am: 07.06.13 - 11:38:41 »
Wenn Du in die eingebettete Ansicht klickst und F9 drückst, wird die dann aktualisiert?

Zu dem würdig-userfreundlichen Ersatz des Buttons: Ich würde die Dokumente nachts per Agent aktualisieren lassen, dann müssen die nur refresht werden, wenn sich am laufenden Tag etwas geändert hat.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #17 am: 07.06.13 - 11:45:04 »
Noch einmal hartnäckig nachgefragt: Brauchst Du die Information wirklich in der Ansicht? Also in der View, in der Liste der nicht geöffneten Dokumente (das Wort "Ansicht" wird oft missverstanden)? Oder reicht es aus, wenn die Information im geöffneten Dokument zu sehen ist?

Wenn es nur "nice to have" ist, würde ich auf den ganzen Zirkus verzichten...

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: Aktualisierung von Werten im Parent Document
« Antwort #18 am: 24.06.13 - 09:56:35 »
Hallo Peter,

zu deiner hartnäckigen Frage: Ich brauch die Anzeige immer direkt gleich, weil der User sich sonst wundert. Ich bleibe jetzt beim Aktualisieren-Button, ist momentan so akzeptiert vom Anwender.

Wegen der anderen Frage zur Anzeige des ersten Antwort-Dokuments in der eingebetteten Ansicht. Also ein F9 lässt das Dokument plötzlich erscheinen in der Ansicht. Programmatisch kann ich es aber leider nicht lösen. Habe die letzte Zeile nun zu meinem "Neuer Kontakt"-Button hinzugefügt und es bringt nichts :-((

@If(@IsNewDoc;@Command([FileSave]);true);
@Command([ComposeWithReference];null:null;"frmKontakt";1);
@Command([ReloadWindow])

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Aktualisierung von Werten im Parent Document
« Antwort #19 am: 24.06.13 - 10:36:09 »
...Ich brauch die Anzeige immer direkt gleich, weil der User sich sonst wundert. Ich bleibe jetzt beim Aktualisieren-Button, ist momentan so akzeptiert vom Anwender.
Das beantwortet aber nicht meine Frage. Also noch einmal ganz deutlich:

Wenn Du die Daten (die Summen oder was auch immer das ist) in einer Ansicht anzeigen willst/musst, müssen die Informationen im Dokument gespeichert sein. Eine Ansicht (-> View) ist das Ding, in dem die Dokumente angezeigt werden, und zwar im geschlossenen Zustand.

Du sprichst von einer "Anzeige immer direkt gleich" und von einem "Aktualisieren Button". Das fühlt sich für mich so an, als wenn Du von einem geöffneten Dokument sprichst.

Sollten die Werte aus den Antwortdokumenten also nur im geöffneten Dokument sichtbar sein müssen (also nicht in einer Ansicht, in der nur geschlossene Dokumente aufgelistet werden), brauchst Du die Daten nicht ins Hauptdokument zu rechnen und zu speichern(!), da genügt ein berechnet zur Anzeige. Keine Konflikte, kein Aktualisieren aus Antwortdokumente usw., also eigentlich nur Vorteile.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz