Search the FirstSpirit Knowledge Base
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
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).
Hi Tobias,
auf welche Art Spalte ist denn die FS_LIST für A-C gemappt?
Gruß
Stefan
XML und es klappt ja auch alles, wenn man Inhalte über den Client pflegt.
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).
Das kann ich mir nicht erklären, aber jetzt funktionieren beide Fälle. Danke.