Search the FirstSpirit Knowledge Base
Hallo zusammen
Ich habe eine Datenbank, nicht FirstSpirit Datenbank. Die Datenbank ist eingebunden.
In der Spalte Marke stehen x-mal die selben Werte wie zum Beispiel: Allchemet oder STAMM.
Ich möchte nun die Marke als Auswahl in einem Formular als "CMS_INPUT_COMBOBOX" anbieten. Dort sollen aber die Werte nur einmal vorkommen. Wie kann ich das umsetzen?
Danke für einen Tipp und Grüsse
Thomas
Hallo Thomas,
ich würde das so machen:
In der Datenbank einen View einbinden, der den gewünschten Inhalt hat.
Im Schema diesen View als Datenbanktabelle einbinden (das muss wahrscheinlich manuell geschehen, indem man das Schema extern bearbeitet. Du kannst aber die bereits vorhandene Tabelle als Vorlage nehmen. Entweder kopieren oder (wenn die kompletten Daten nicht benötigt werden) den dbname auf den des Views ändern. Im View nicht vorhandene Spalten entfernen). Dann eine Tabellenvorlage beruhend auf dem View erzeugen und die Datensätez aus dieser in der Combobox zur Auswahl anbieten.
Das klingt komplizierter als es ist ;), auch wenn es ein paar kleinere Fallstricke gibt (z.B. dass das XML valide bleiben muss). deshalb unbedingt das Original-XML sichern, damit Du immer wieder darauf zurückgehen kannst.
Viele Grüße
Holger
Hallo Holger
Alles klar. Dann muss ich mir den jeweiligen Key der Marke liefern lassen. Die Daten werden aus einem Drittsystem via XML in unsere DB geschrieben und dann über FS ausgegeben.
Ich DANKE Dir und viele Grüsse
Thomas
Hallo Thomas,
ich würde das so machen:
In der Datenbank einen View einbinden, der den gewünschten Inhalt hat.
Im Schema diesen View als Datenbanktabelle einbinden (das muss wahrscheinlich manuell geschehen, indem man das Schema extern bearbeitet. Du kannst aber die bereits vorhandene Tabelle als Vorlage nehmen. Entweder kopieren oder (wenn die kompletten Daten nicht benötigt werden) den dbname auf den des Views ändern. Im View nicht vorhandene Spalten entfernen). Dann eine Tabellenvorlage beruhend auf dem View erzeugen und die Datensätez aus dieser in der Combobox zur Auswahl anbieten.
Das klingt komplizierter als es ist ;), auch wenn es ein paar kleinere Fallstricke gibt (z.B. dass das XML valide bleiben muss). deshalb unbedingt das Original-XML sichern, damit Du immer wieder darauf zurückgehen kannst.
Viele Grüße
Holger
Hallo Holger
Danke für den Tipp. Ich bin auch schon ziemlich weit mit der Umsetzung. Ich habe eine View erstellt. Ich habe versucht das Schema extern zu bearbeitet und wieder eingebettet. Ich sehe in FirstSpirit in Schema die neue Tabelle. Habe das Formular mit dem Mapping erstellt und auch eine Datenquelle auf basis der neuen Tabelle erstellt.
Das Problem ist nun, dass ich keine Datensätze sehe. Auf der Datenbank selber sehe ich Datensätze.
Schema:
<xs:complexType dbName="sfs_inserate_marke" name="sfs_inserate_marke" readonly="1">
<xs:sequence>
<xs:element dbName="MARKE" javaType="java.lang.String" length="50" name="Marke" nullable="1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Ich kann leider keine Bilder einbetten. Aber vielleich siehst du den Fehler.
Grüsse. Thomas
Hallo Thomas,
der View heißt in der Datenbank sfs_inserate_marke? Wenn ja, hat er eine Spalte, die als "PseudoPrimaryKey" verwendet werden kann? Wenn das XML vollständig ist, ist die Antwort "nein"
[die Spalte wird gebraucht, da wir FS vorspiegeln müssen, dass es eine "echte" Datenbanktabelle ist]. Die Spalte sollte idealerweise keine Daten enthalten, die du später ausgeben willst.
Anschließend muss die Spalte FS noch als primary key im Schema bekannt gemacht werden, beispielsweise so:
<xs:key dbName="pk_sfs_inserate_marke" name="pk_sfs_inserate_marke">
<xs:selector xpath="sfs_inserate_marke"/>
<xs:attribute xpath="<eindeutiger-Identifier>"/>
</xs:key>
Helfen dir die Hinweise weiter?
Anmerkung: Ich habe einen View das letzte Mal vor 10 Jahren oder so eingebunden. Ich bin da ein bisschen eingerostet 😉 Leider kann ich nicht ausschließen, dass ich im Moment etwas übersehe...
Viele Grüße
Holger
Hallo Holger
Vielen lieben DANK für deinen Tipp. Ich habe nun Daten im FirstSpirit 🙂
Ich kann auch über die " <CMS_INPUT_COMBOBOX" die Daten zugreifen. Ich frage mich nun nur noch, was wird eigendlich in FS gespeichert. Der MARKEN_KEY oder die MARKE.
Da die View den Key erstellt, könnte dieser sich ja ändern und dann wären die falschen Daten auf dem FirstSpirit Template gesetzt.
SELECT
ROW_NUMBER() OVER(ORDER BY (MARKE) ASC) MARKEN_KEY,
sfs_inserate_erecruiting.MARKE
FROM sfs_inserate_erecruiting
GROUP BY
sfs_inserate_erecruiting.MARKE
Grüsse. Thomas
Hallo Thomas,
es wird der Key gespeichert. In der Datenbank muss also sichergestellt werden, dass der Key eindeutig der Marke zugeordnet werden kann.
Aus technischer Sicht "glaubt" FirstSpirit, dass eine Datenbanktabelle (und kein View) angebunden ist. Da die Referenz bei redaktionellen Änderungen in der Datenbank nicht kaputt gehen darf, benutzt FirstSpirit grundsätzlich technische, möglichst unveränderliche Referenzen (bei FirstSpirit Datenquellen werden deshalb inzwischen die GIDs verwendet, die auch nach einem Datensatz-Transfer erhalten bleiben).
Für den Anwendungsfall hier ist das zwar unschön, allgemein aber das gewünschte Verhalten. Kannst Du in der Datenbank aus den Marken eine UUID erzeugen und die Spalte als Identifier in FirstSpirit angeben?
[ACHTUNG: Änderungen an der Identifier Spalte führen natürlich dazu, dass bereits gespeicherte Referenzen ungültig werden!]
Viele Grüße
Holger
Hallo Holger
Alles klar. Dann muss ich mir den jeweiligen Key der Marke liefern lassen. Die Daten werden aus einem Drittsystem via XML in unsere DB geschrieben und dann über FS ausgegeben.
Ich DANKE Dir und viele Grüsse
Thomas