jean-claude_bac
I'm new here

Input Form einer Tabelle mit einer n:m Beziehung zu sich selbst

Wie gestaltet man eine Input Form einer Tabelle product, die eine n:m Beziehung zu sich selbst aufweisst.

Die eine Seite der Beziehung heisst accessories. Ich habe das folgende auf dem Form template der Tabelle product selbst probiert:

  <FS_LIST name="tt_accessories">

    <DATASOURCE type="database" useLanguages="no">

      <ACTIONS>

        <ACTION name="EDIT"/>

      </ACTIONS>

      <COLUMNS>

        <COLUMN show="no">#identifier</COLUMN>

      </COLUMNS>

      <LAYOUT>

        <ADD component="stackedview" constraint="hide"/>

        <ADD component="toolbar" constraint="top"/>

        <ADD component="overview" constraint="hide"/>

        <ADD component="tabbedview" constraint="bottom"/>

      </LAYOUT>

      <TABLE>global.product</TABLE>

    </DATASOURCE>

    <LANGINFOS>

      <LANGINFO lang="*" label="Accessories"/>

    </LANGINFOS>

  </FS_LIST>

und bekomme eine Fehlermeldung:

"Bad GOM utilization!

A form element may not define its own table template as the target."

die ich nachvollziehen kann, da man auf diese Weise ja eine Endlosschleife bauen würde. Die Frage ist wie würde man eine solche Beziehung in der Input Form abbilden? Wie sieht eine solche Eingabekomponente aus? Was ich wahrscheinlich brauche ist eine Liste von Referenzen auf Einträge der gleichen Tabelle.

0 Kudos
3 Replies
feddersen
Community Manager

Sie können eine zweite Tabellenvorlage anlegen, die kann abgesehen von der FS_LIST alle Eingabekomponenten ihres momentanen Formulares enthalten. Die Tabellenvorlage geben Sie dann als TABLE für ihre FS_LIST an.

Hallo Herr Feddersen,

ich habe ein ähnliches Problem und habe versucht, es auf diese Weise zu lösen. Das Speichern des Formulars gelingt mir.

Die führende Vorlage heißt bspw. "global_schema.product", die von Ihnen vorgeschlagene Hilfsvorlage dann "global_schema.product_help". In "global_schema.product_help" habe ich das Mapping entsprechend gesetzt etc und die FS_LIST weggelassen (wie bei Ihnen oben beschrieben).

Jedoch kommt beim Aufruf des "ADD"-Buttons bei der FS_LIST im Formular dann eine Exception:

------------------------

WARN  07.10.2015 10:21:12.293 (de.espirit.firstspirit.client.AbstractGuiHost): Element 'global_schema.product_help' (ID=<NULL>) wurde nicht gefunden.

FSVersion=5.1.421.69829#4623;JDK=1.8.0_51 64bit Oracle Corporation;OS=Windows 7 6.1 amd64;Date=07.10.2015 10:21:12

de.espirit.firstspirit.access.store.ElementNotFoundRuntimeException

    at de.espirit.firstspirit.access.store.contentstore.gom.list.ContentActions$Add.actionPerformed(ContentActions.java:424)

    at de.espirit.firstspirit.access.store.templatestore.gom.fslist.DefaultActionHandler.actionPerformed(DefaultActionHandler.java:39)

    at de.espirit.firstspirit.ui.gadgets.swing.fslist.FsListGadgetUI$Handler.actionPerformed(FsListGadgetUI.java:664)

    at de.espirit.firstspirit.ui.gadgets.swing.fslist.ToolbarAction.notifyActionListener(ToolbarAction.java:68)

    at de.espirit.firstspirit.ui.gadgets.swing.fslist.ToolbarAction.actionPerformed(ToolbarAction.java:41)

    at de.espirit.firstspirit.ui.gadgets.aspects.toolbar.Action$1.actionPerformed(Action.java:38)

    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

......

......

------------------------------------------

Liegt hier ggf ein Produkt-Fehler vor oder muss noch irgendwas in den Vorlagen konfiguriert / gesetzt werden?

Ich habe das mit verschiedenen Tabellen (andere als Produkt bspw.) probiert, jedoch kommt immer wieder die Exception hoch.

FS-Version und JDK siehe Fehlermeldung.

Danke und viele Grüße,

Matthias Przybylski

0 Kudos

Hallo nochmal,

ich hatte keine Datenquelle für die Vorlage global_schema.product_help angelegt.

Nun habe ich diese erstellt und schon klappt es.

Dann nehme ich diesen "Umweg" in Kauf und blende mit Rechten die DQ aus.

Trotzdem danke!

Viele Grüße,

Matthias Przybylski

0 Kudos