Questions & Answers

SOLVED
th_biedermann
Occasional Collector

Daten aus Datenquelle gruppieren in CMS_INPUT_COMBOBOX

Jump to solution

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

 

 

0 Kudos
2 Solutions

Accepted Solutions
hoebbel
Crownpeak employee

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

View solution in original post

0 Kudos

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

View solution in original post

0 Kudos
6 Replies
hoebbel
Crownpeak employee

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

0 Kudos

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

 

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos

Type a product name