2 von einander abhängige Multi-Data-Edit-Elemente auf einem Daten-Edit-Element

Bernd Essen

Mitglied
Teammitglied
Hallo,
ich habe auf einem Daten-Edit-Element (basierend auf einem Datensatz) zwei Multi-Data-Edit-Elemente. Diese basieren ebenfalls auf Datensätzen.
Im Datensatz des "Master" habe ich die Beziehnungen zu den Detail-Datensätzen geschaffen.

Soweit, so gut.

Die Kür ist nun, dass die Daten des einen Detail-Datensatzes die Daten des anderen Detail-Bereiches einschränken.

Meine Idee war nun, ein virtuelles Feld auf das Daten-Edit-Element zu legen, und dann das 2- Detail-Element, davon abhängig zu machen.

Leider geht das nicht, weil, ja der Datensatz die Filterung steuert und nicht das Oberflächenfeld.

Andere Idee ist, einen Filter an das 2. MDE zu übergeben und dieses dann zu aktualisieren. Kann das klappen?

Frage: Ist es überhaupt möglich eine solche Verknüpfung zu erreichen? Und wenn ja, wo gibt es ein Beispiel?

Besten Dank für eine Idee.

Bernd Essen
 
Hallo Bernd,

mit zwei gleichrangig eingebetteten Multi-Data-Edit-Elementen auf demselben DataEdit ist die gewünschte automatische Abhängigkeit im Standard-AppDesigner nicht umsetzbar.

Beide MDEs werden als Detailbereiche des Datensatzes geladen, auf dem das umgebende DataEdit basiert. Die aktuell markierte Zeile des ersten MDE wird dabei nicht automatisch zum Masterdatensatz des zweiten MDE. Auch ein virtuelles Feld auf der Oberfläche ändert diese Datenhierarchie nicht.

Handelt es sich fachlich um eine 1:n:m-Beziehung, ist das von Sage vorgesehene Muster:
  1. Das erste MDE zeigt die n-Datensätze des eigentlichen Masters.
  2. Für den ausgewählten n-Datensatz wird über einen Kontextmenüeintrag mit DatensatzBearbeiten.Sage.System ein eigenes DataEdit geöffnet.
  3. In diesem DataEdit wird das MDE der m-Beziehung als Unterelement eingebettet.
  4. Der DataRecord der n-Beziehung erhält die DetailDataRecordReference zur m-Beziehung. Der VirtualFieldName muss dem Feldnamen des eingebetteten MDE entsprechen; die Join-Felder verbinden die Schlüssel der n- und m-Datensätze.

Genau dieses Vorgehen beschreibt Sage für 1:n:m-Beziehungen: Die m-Beziehung wird am DataRecord der n-Beziehung hinterlegt und ihr MDE dem DataEdit der n-Beziehung zugeordnet.

Sage-Hilfe:
https://sagegmbh.atlassian.net/wiki/spaces/S1/pages/198344705/Version+8.1
https://sagegmbh.atlassian.net/wiki/spaces/S1/pages/737148980/Zusammenfassung

Die Idee „markierte Zeile aus MDE 1 übernehmen, Filter an MDE 2 setzen und MDE 2 aktualisieren“ ist dagegen mit den Standard-Makrobefehlen nicht als allgemeines Muster bekannt. Ein expliziter Kontextmenüaufruf kann zwar Werte der markierten MDE-Zeile verwenden, aber:
  • SetFilter filtert im geprüften Client Auswahlfelder mit SubPart-Liste, nicht ein beliebiges MDE.
  • RefreshList aktualisiert im DataEdit dessen Navigationsliste.
  • RefreshSubpart besitzt im geprüften DataEdit keine entsprechende Implementierung.
  • MDE-OnCurrent ist kein Ereignis für den bloßen Wechsel der markierten Zeile.

Das passende Beispiel ist „Rezept 37 – Arbeiten mit 1:n:m-Beziehungen“.

Viele Grüße
Marcel
 
Zurück
Oben