Skip to main content

Daten aus Datenquelle gruppieren in CMS_INPUT_COMBOBOX

Comments

6 comments

  • Zendesk API User
    Author: hoebbel - 8/17/2022 8:22

    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
  • Zendesk API User
    Author: th_biedermann - 8/17/2022 13:19

    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
  • Zendesk API User
    Author: hoebbel - 8/17/2022 14:18

    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
  • Zendesk API User
    Author: th_biedermann - 8/18/2022 7:20

    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
  • Zendesk API User
    Author: hoebbel - 8/18/2022 8:16

    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
  • Zendesk API User
    Author: th_biedermann - 8/18/2022 8:29

    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

Please sign in to leave a comment.