twolf
I'm new here

FS_DATASET Vorauswahl mit Query

Jump to solution

Hallo Community,

ich sitze gerade an einem Projekt und habe die Aufgabe einem FS_DATASET einen Default-Wert zu geben. Leider soll hiefür ein dynamischer "Datums-Abhängiger"-Wert ausgelesen werden.

Ist es überhaupt möglich, dass man einem FS_DATASET ein Default-Wert gibt, welcher durch ein Query gefüllt wird?

Unser Anwenungsfall:

Wir haben eine Einstellungsmöglichkeit in der man ein Event auswählen kann. Dies ist kein Pflichtfeld. Sofern hier kein Event ausgewählt wurde, soll das Event genommen werden, welches in der DB im Feld "start_date" von heute aus gesehen das nächste Event ist.

Das Query sieht wie folgt aus:

<CMS_HEADER>

     <CMS_FUNCTION name="contentSelect" resultname="fr_st_nextEvent">

               <CMS_PARAM  name="schema" value="master_content" />

               <QUERY entityType="events" limit="1">

               <ORDERCRITERIA attribute="start_date" ascending="1" />

               <AND>

                    <GTE attribute="start_date" datatype="de.espirit.common.Now" value="global.now.timeInMillis"/>

               </AND>

          </QUERY>

     </CMS_FUNCTION>

</CMS_HEADER>

Vielen Dank im Voraus,

Tim

0 Kudos
1 Solution

Accepted Solutions
twolf
I'm new here

Leider musste ich hier ein wenig tricksen und 4 verschiedene Abfragen machen um auf meine Lösung zu kommen:

<CMS_FUNCTION name="contentSelect" resultname="fr_st_nextDefiniteEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

      <QUERY entityType="events" limit="1">

           <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

           <AND>

           <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

           <GTE attribute="end_date" datatype="de.espirit.common.Now" value="global.now.timeInMillis"/>

           </AND>

           <ORDERCRITERIA attribute="start_date"/>

     </QUERY>

</CMS_FUNCTION>

<CMS_FUNCTION name="contentSelect" resultname="fr_st_lastDefiniteEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

     <QUERY entityType="events" limit="1">

          <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

          <AND>

          <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

          </AND>

          <ORDERCRITERIA attribute="start_date" descending="1"/>

     </QUERY>

</CMS_FUNCTION>

<CMS_FUNCTION name="contentSelect" resultname="fr_st_nextTemporaryEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

     <QUERY entityType="events" limit="1">

          <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

          <AND>

          <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

          <GTE attribute="temporary_date" datatype="de.espirit.common.Now" value="global.now.timeInMillis"/>

          </AND>

          <ORDERCRITERIA attribute="temporary_date"/>

     </QUERY>

</CMS_FUNCTION>

<CMS_FUNCTION name="contentSelect" resultname="fr_st_lastTemporaryEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

     <QUERY entityType="events" limit="1">

          <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

          <AND>

          <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

          </AND>

          <ORDERCRITERIA attribute="temporary" descending="1"/>

     </QUERY>

</CMS_FUNCTION>

$CMS_IF(!gc_headerEvent.empty)$

     $CMS_SET(set_networkId, gc_headerEvent.getDataset.getFormData.fs_id)$

     $-- check if event networks returns an event and set next, respectively last event, as eventDataset --$

     $CMS_IF(!fr_st_nextDefiniteEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_nextDefiniteEvent.first)$

     $CMS_ELSIF(fr_st_nextEvent.empty && !fr_st_lastDefiniteEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_lastDefiniteEvent.first)$

     $CMS_ELSIF(!fr_st_nextTemporaryEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_nextTemporaryEvent.first)$

     $CMS_ELSIF(fr_st_nextTemporaryEvent.empty && !fr_st_lastTemporaryEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_lastTemporaryEvent.first)$

     $CMS_ELSE$

          $CMS_SET(set_eventDataset, null)$

     $CMS_END_IF$

$CMS_END_IF$

View solution in original post

0 Kudos
3 Replies
tlegat
I'm new here

Hi Tim,

kannst Du vielleicht noch die Verwendung von fr_st_nextEvent posten? Benötigst Du den Defaultwert in der FS GUI oder in der Ausgabe, z.B. als default eines <select> Feldes?


Gruß,

Tibor

0 Kudos
TanjaGroßmüller
Crownpeak employee

Hallo Tim,

falls Deine Frage noch aktuell ist, wäre es schön, wenn Du Tibors Rückfragen noch beantworten könntest.

Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Grüße,

Tanja

0 Kudos
twolf
I'm new here

Leider musste ich hier ein wenig tricksen und 4 verschiedene Abfragen machen um auf meine Lösung zu kommen:

<CMS_FUNCTION name="contentSelect" resultname="fr_st_nextDefiniteEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

      <QUERY entityType="events" limit="1">

           <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

           <AND>

           <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

           <GTE attribute="end_date" datatype="de.espirit.common.Now" value="global.now.timeInMillis"/>

           </AND>

           <ORDERCRITERIA attribute="start_date"/>

     </QUERY>

</CMS_FUNCTION>

<CMS_FUNCTION name="contentSelect" resultname="fr_st_lastDefiniteEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

     <QUERY entityType="events" limit="1">

          <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

          <AND>

          <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

          </AND>

          <ORDERCRITERIA attribute="start_date" descending="1"/>

     </QUERY>

</CMS_FUNCTION>

<CMS_FUNCTION name="contentSelect" resultname="fr_st_nextTemporaryEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

     <QUERY entityType="events" limit="1">

          <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

          <AND>

          <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

          <GTE attribute="temporary_date" datatype="de.espirit.common.Now" value="global.now.timeInMillis"/>

          </AND>

          <ORDERCRITERIA attribute="temporary_date"/>

     </QUERY>

</CMS_FUNCTION>

<CMS_FUNCTION name="contentSelect" resultname="fr_st_lastTemporaryEvent">

     <CMS_VALUE_PARAM  name="network_id" value="set_networkId" />

     <CMS_PARAM  name="schema" value="master_content" />

     <QUERY entityType="events" limit="1">

          <FILTERPARAM parameter="network_id" datatype="java.lang.Long"/>

          <AND>

          <EQ attribute="network.fs_id" datatype="java.lang.Integer" parameter="network_id"/>

          </AND>

          <ORDERCRITERIA attribute="temporary" descending="1"/>

     </QUERY>

</CMS_FUNCTION>

$CMS_IF(!gc_headerEvent.empty)$

     $CMS_SET(set_networkId, gc_headerEvent.getDataset.getFormData.fs_id)$

     $-- check if event networks returns an event and set next, respectively last event, as eventDataset --$

     $CMS_IF(!fr_st_nextDefiniteEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_nextDefiniteEvent.first)$

     $CMS_ELSIF(fr_st_nextEvent.empty && !fr_st_lastDefiniteEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_lastDefiniteEvent.first)$

     $CMS_ELSIF(!fr_st_nextTemporaryEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_nextTemporaryEvent.first)$

     $CMS_ELSIF(fr_st_nextTemporaryEvent.empty && !fr_st_lastTemporaryEvent.empty)$

          $CMS_SET(set_eventDataset, fr_st_lastTemporaryEvent.first)$

     $CMS_ELSE$

          $CMS_SET(set_eventDataset, null)$

     $CMS_END_IF$

$CMS_END_IF$

0 Kudos