Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: klox am 10.07.06 - 15:12:24
-
Hallo,
Der Betreff enthält schon meine komplette Frage. Ich möchte in Formelsprache mittels @GetDocField auf ein Feld aus dem Parentdocument zugreifen. Da das $Ref Feld erst nach dem ersten Speichern gefüllt ist finde ich keine Möglichkeit diese Beziehung herzustellen.
Ich bin auch schon einmal die Liste der Formelbefehle durchgegangen, konnte aber nichts finden. Hat jemand eine Idee?
mfg
klox
-
Kannst Du nicht die Masken-Option "Felder übernehmen Werte aus gewähltem Dokument" verwenden?
Bernhard
-
Hier noch gleich der Text aus der Hilfe... ;)
So erstellen Sie ein Feld, das Werte aus anderen Dokumenten übernimmt
Erstellen Sie Felder, die Informationen aus anderen Dokument übernehmen, um Benutzern unnötige Eingaben oder das Vereinheitlichen verwandter Dokumente zu ersparen. Öffnen Sie die Maske.
1. Wählen Sie "Gestaltung - Eigenschaften: Maske".
2. (Optional) Um Endbenutzern das Hauptdokument in der Dokumentvorschau des Notes Clients anzuzeigen, klicken Sie auf das Register "Vorgaben", wählen Sie "Beim Öffnen: Kontextfenster anzeigen" und anschließend "Hauptdokument".
3. Wählen Sie "Beim Erstellen: Formeln übernehmen Werte aus gewähltem Dokument".
4. Erstellen Sie die Felder, die Werte übernehmen sollten.
5. Schreiben Sie einen Standardwert oder eine Feldberechnungsformel für jedes Feld, das den Feldnamen des Hauptdokuments als Wert verwendet. Um z. B. den Wert des Felds "VollstName" zu übernehmen, benutzen Sie "VollstName" als Formel in dem Feld, das den Wert übernimmt.
André
-
Kannst Du nicht die Masken-Option "Felder übernehmen Werte aus gewähltem Dokument" verwenden?
Bernhard
Ich habe eine Subform in der ich Felder habe deren Inhalt anhand einer Formel berechnet wird die man in der Configuration festlegen kann (@Eval). An das Design dieser Subform kann ich im Moment nicht ran, da die Datenbank schon "live" ist.
Ich kann also nur diese Formel ändern!
Gibt es wirklich keine Möglichkeit mittels Formelsprache auf das Parentdocument eines neuen Childdocuments zuzugreifen?
mfg
klox
-
Mach eine Kopie von der Datenbank und die Kopie erklärst Du zur Schablone ( nenn die Kopie dann am besten gleich sinnvollername.ntf ) . Oder hast Du keine Rechte mehr an der Datenbank?
Dann kannst Du schön am Design arbeiten. Und wenn alles Ok ist, Schablone auf DB.
Wenn Du die Subform nicht ändern kannst, warum dann die Formel? Die Formel ist genauso Live wie die Subform...
Du kannst auch mit der Axt in den Wald gehen und die UNID des Parent beim erstellen des Child in das Child schreiben... :)
Aber Bernhards Methode ist besser, da muss man nichts Programmieren sondern nur was an den Eigenschafen ändern.
André
-
Warum muss das eigtentlich unbedingt mittels @functions gemacht werden? Du kannst das doch auch mit LS erledigen - oder spricht das was dagegen?
Bernhard
-
Warum muss das eigtentlich unbedingt mittels @functions gemacht werden? Du kannst das doch auch mit LS erledigen - oder spricht das was dagegen?
Bernhard
Leider ja.
Ich erklär vielleicht nocheinmal den Hintergrund:
Wir haben eine Anwendung in der verschiedene Dokumenttype gespeichert werden können. Diese Dokkumenttype können konfiguriert werden.
Man kann beliebig viele Konfigurationen anlegen. Eine Konfiguration erhält die Angabe der der Standardform (frmMain, frmResp, frmR2R), plus einen satz von bis zu 40 Subforms (sfrmKundenAddresse, sfrmNotiz,...) die feststehende Felder enthalten. Zusätzlich müssen natürlich einige Felder berechnet werden die in den Views angzeigt werden: ViewSymbol, ViewSubject, ViewCategory,...).
Das hat bislang auch gereicht. Alleringd wird diese Anwendung mittlerweile in ganz Europa genutzt. Jedes Land hat natürlich seine eigenen Ansprüche und Wünsche. Wir haben einige Subforms in denen über DisplayFields Informationen angezeigt werden können. Was dort angzeigt wird kann mittels Formelsprache in der Konfiguration festgelegt werden. (z.B. @if( CreditExposure > 1000; "Blocked for Orders"; "Free to Order" )).
In manchen Fällen befindet sich diese Information aber nicht in dem Response Document sondern in dem Main Document. Ich möchte und kann das Design dieser frei einstellbaren Subforms natürlich nicht ändern.
Ich hoffe der Grund für meine Frage ist jetzt etwas klarere geworden. An der grundsätzlichen Technik, kann und darf ich nichts ändern.
mfg
klos
-
Kannst Du das ResponseDoc wenigstens über LS anlegen? Denn dann könntest Du Dir auch Zugang zur ParentUNID verschaffen und diese wiederum Deinen Feldern, die @functions brauchen, zur Verfügung stellen.
Abgesehen davon funktioniert das natürlich auch mit Masken, die Werte aus dem gewählten Dokument übernehmen. Du müsstest nur diese Eigenschaft setzen und ein berechnetes Feld für die ParentUNID schaffen. Wenn das allerdings auch nicht möglich ist, dann sehe ich keinerlei Chance, wie Du ohne derartige Eingriffe überhaupt eine derartige Erweiterung Eurer Applikation hinbekommen könntest.
Bernhard
-
Fangen wir doch einmal ganz einfach an: Watt iss enne Dampfmaschien ?
Nein: Wenn die Entwickler dieser Anwendung ein wenig Ahnung haben, dann haben sie ja bereits jetzt bei den Antwortdokumenten eingestellt, daß diese Masken die Werte übernehmen.
Die einfachste Möglichkeit, das zu erkunden, ist, in die @EVAL-Formel einmal einzusetzen
@InheritedDocumentUniqueID
Verwendung
Diese Funktion funktioniert in Dokumenten, die mit einer Maske erstellt werden, die Feldwerte vom ausgewählten Dokument übernimmt.
In Dokumenten, die keine Werte übernehmen, liefert @InheritedDocumentUniqueID denselben Wert wie @DocumentUniqueID.
Wenn das nicht funktioniert und du nix ändern darfst und kein Script verwenden darfst, dann geht es halt nicht. Aber das liegt weder an dir, noch an Notes. Es liegt dann an der Nichtbeachtung des ersten Hauptsatzes der praktischen Philosophie:
Wer den Zweck will, muß auch die Mittel wollen, die zur Erreichung des Zwecks notwendig sind.
-
Uips - darauf hätte ich auch kommen müssen ... Auch sonst volle Zustimmung, LN4Ever!
Bernhard
-
@InheritedDocumentUniqueID
Verwendung
Diese Funktion funktioniert in Dokumenten, die mit einer Maske erstellt werden, die Feldwerte vom ausgewählten Dokument übernimmt.
In Dokumenten, die keine Werte übernehmen, liefert @InheritedDocumentUniqueID denselben Wert wie @DocumentUniqueID.
Pefekt. Genau das habe ich gesucht. Nun funktioniert es. Danke!
Wer den Zweck will, muß auch die Mittel wollen, die zur Erreichung des Zwecks notwendig sind.
Wie wahr!
mfg
klox