Munixo Support Forum - Kostenfreier Support für Munixo Anwender und Entwicklungspartner
0 Punkte
Kann man eine Subtabelle eines verlinkten Objektes in der Detailmaske darstellen?

Beispiel: Bankinformationen zu Mitarbeitern. Im Mitarbeiter ist ein Personenkontakt verlinkt, der wiederrum Bankinformationen hinterlegt hat. Nachdem jedem Mitarbeiter genau ein Personenkontakt zugeordnet wird, wäre es nutzerfreundlich die Bankinformationen (wenn der Mitarbeiter denn verlinkt ist) als Reiter im Mitarbeiter direkt darzustellen, ohne erst den Personenkontakt aufrufen zu müssen.

Geht das? Wenn ja, wie müsste ich das implementieren?
von (1.2k Punkte)

1 Antwort

0 Punkte
Die Registrierung einer Subtabelle muss in einem Plugin erfolgen. Dazu muss eine der beiden Methoden

CreateLinkSubTable(string parentObjectName, string childFieldName);
CreateLinkSubTableForeign(string parentObjectName, string childFieldName, string parentFieldName);

in der Extension des Objekts aufgerufen werden, das als Subtabelle registriert werden soll.

In diesem Beispiel ist eine Extension "Ext_BAS_ContactBanks" notwendig. Im Konstruktor müsste dann (außerhalb einer Version) die Methode

CreateLinkSubTableForeign(cDatabaseObjectNames.Employees, cFieldName.Contact, cFieldName.PrivateContact);

stehen, da eine Fremdschlüsselverlinkung vorliegt.

Ein Beispiel für eine Subtabellenregistrierung befindet sich im HelloMunixo-Projekt in der Datei Ext_PI_HelloMunixo_ProductFabrics.
von (1.4k Punkte)
Vielen Dank für die Zusammenfassung zur Registrierung von Subtabellen!
Meine Frage war aber wie eine bereits registrierte Subtabelle in einem verlinkten Unterobjekt in der Detailmaske angezeigt werden kann? (Zwei verlinkungsstufen: Verlinktes Objekt, daran eine verlinkte Subtabelle)

Oder kann ich der Antwort entnehmen dass das so nicht möglich ist und ich nur direkt verlinkte Subtabellen in einer Detailmaske anzeigen kann?
Über die oben beschriebene Weise (CreateLinkSubTableForeign) kann im Mitarbeiter die Subtabelle aus den Kontakten über einen Fremdschlüssel angezeigt werden.
Dazu ist zwar eine neue Registrierung einer Subtabelle nötig aber dadurch kann man dann die Bankinformationen des Kontaktes als Subtabelle am Mitarbeiter sehen.
Vielen Dank, getestet und scheint genau das Problem im Beispiel zu adressieren.
Kam für mich in der ersten Antwort nicht direkt raus, dass die Anzeigen somit auch übers Plugin festlegt werden und registriert werden müssen für diese 2-Stufige Verlinkung - danke für den zusätzlichen Hinweis!

Hinweis/Anmerkung meinerseits dazu: wenn bei einem Mitarbeiter kein Privatkontakt hinterlegt ist (sprich das verlinkte Objekt nicht ausgewählt / leer), ist die Verlinktes-Objekt-Verlinkte-Subtabelle auch vorhanden, zeigt aber ungefiltert alle Einträge an. Das könnte im schlimmsten Fall zu Datenschutzproblemen führen (in unserem Fall wird das bereits anders abgefangen).
Vielen Dank für den Hinweis. Wir werden das intern prüfen und Rückmeldung geben.
Möglicher Lösungsvorschlag:
Es gibt die Möglichkeit, Subtabellen einer Detailmaske ein- und auszublenden. Im SetControlState-Event muss dazu die Property
DatabaseObject.ChildDatabaseObjects.Item(<DatabaseObjectName>).ControlVisible = true/false
gesetzt werden.