tnoppeney
I'm new here

FS_LIST Database ohne Relation über API füllen

Jump to solution

Hallo zusammen,

folgende Situation: wir haben ein Datenbankschema mit Tabellen A, B, C. In Tabellenformular A gibt es zwei FS_LIST Komponenten im Database Modus, die eine wird mit Einträgen ausTabelle B gefüllt und es gibt eine N:M Beziehung zwischen A und B. Die andere wird mit Einträge aus Tabelle C befüllt, es existiert allerdings keine Beziehung zwischen A und C. Funktioniert soweit auch.

Jetzt versuchen wir, Daten per API in Tabelle A zu schreiben und u.A. auch die beiden Listen zu befüllen. Folgenden Code verwenden wir dazu (value ist dabei ein Dataset aus der jeweils anderen Tabelle, dass wir der Liste hinzufügen wollen):

FormDataList formDataList = (FormDataList) formField.get();
FormDataProducer producer = formDataList.getProducer();

IdProvidingFormData newListEntry = ((ContentFormsProducer) producer).create(value.getEntity());
formDataList.add(newListEntry);

dataset.setFormData(formData);

Das Ganze funktioniert bei Liste A<->B auch ohne Probleme, bei Liste A<->C allerdings bleibt die Liste leer.

Wenn wir den Code folgendermaßen ändern...

FormDataList formDataList = (FormDataList) formField.get();
FormDataProducer producer = formDataList.getProducer();

IdProvidingFormData newListEntry = ((ContentFormsProducer) producer).create(value.getEntity());
formDataList.add(newListEntry);

Logging.logInfo(String.valueOf(formDataList.size()), Data.class);

dataset.setFormData(formData);

formData = dataset.getFormData();
formField = formData.get(lang, field);
formDataList = (FormDataList) formField.get();

Logging.logInfo(String.valueOf(formDataList.size()), Data.class);

... erhalten wir die Ausgaben 1 und 0, d.h. es landet etwas in der Liste, wird aber nicht persistiert. Wir führen in beiden Fällen nach dem Einfügen ein commit auf Tabelle A aus.

Was machen wir falsch? Prinzipiell müsste das doch der gleiche Ansatz sein, wie eine FS_LIST Database in einer Seiten- oder Absatzvorlage per API zu befüllen, also nichts wirklich "ungewöhnliches".

FS-Version: 5.0.211.55785

Viele Grüße

0 Kudos
1 Solution

Accepted Solutions

Hm, Ok. Ich wundere mich gerade, warum das in dem ersten Fall funktioniert, da in dem Skript die Liste nicht zurückgeschrieben wird. Meines Erachtens fehlt dort mindestens mal ein formField.set(formDataList).

View solution in original post

0 Kudos
4 Replies
StefanSchulz
I'm new here

Hi Tobias,

auf welche Art Spalte ist denn die FS_LIST für A-C gemappt?

Gruß

Stefan

0 Kudos

XML und es klappt ja auch alles, wenn man Inhalte über den Client pflegt.

0 Kudos

Hm, Ok. Ich wundere mich gerade, warum das in dem ersten Fall funktioniert, da in dem Skript die Liste nicht zurückgeschrieben wird. Meines Erachtens fehlt dort mindestens mal ein formField.set(formDataList).

0 Kudos

Das kann ich mir nicht erklären, aber jetzt funktionieren beide Fälle. Danke.

0 Kudos