Prinzessin
I'm new here

Regel / Dynamische Formulare Wertermittlung aus einer Combobox (Datenquelle)

Jump to solution

Hallo,

ich habe eine Combobox, die mit Inhalten aus einer internen FirstSpirit Datenbank gefüllt wird:

<CMS_INPUT_COMBOBOX name="cs_typ" allowEmpty="no" sortOrder="ascending" useLanguages="no">

    <CMS_INCLUDE_OPTIONS type="database">

      <LABELS>

        <LABEL lang="*">#item.typ_bezeichnung</LABEL>

      </LABELS>

      <QUERY name="further_content.news_types"/>

      <TABLE>further_content.news_typ</TABLE>

    </CMS_INCLUDE_OPTIONS>

    <LANGINFOS>

      <LANGINFO lang="*" label="Typ" description="Please choose the article type."/>

      <LANGINFO lang="DE" label="Typ" description="Bitte wählen Sie den Typ aus."/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

Nun möchte ich eine Regel definieren, dass das Feld cs_subline nur erscheint, wenn der gewählte Eintrag aus der Combobox die ID "3584" hat.

Ich habe es schon so versucht:

<ON_EVENT>

        <WITH>

            <EQUAL>

                <PROPERTY source="cs_typ" name="ENTRY"/>

                <NUMBER>3584</NUMBER>

            </EQUAL>

        </WITH>

        <DO>         

            <PROPERTY source='cs_subline' name='VISIBLE'/>

        </DO>

    </ON_EVENT>

Und so:

<ON_EVENT>

        <WITH>

            <EQUAL>

                <PROPERTY source="cs_typ" name="value"/>

                <NUMBER>3584</NUMBER>

            </EQUAL>

        </WITH>

        <DO>         

            <PROPERTY source='cs_subline' name='VISIBLE'/>

        </DO>

    </ON_EVENT>

Laut der Dokumentation muss man eine Abfrage anlegen, über die die Combobox gefüllt werden muss. Das hab ich dann hier getan:

<QUERY entityType="news_typ">

    <FILTERPARAM parameter="news_id" datatype="java.lang.Integer" value="3583"/>

    <GT attribute="fs_id" parameter="news_id"/>

</QUERY>

Und die Regel so angepasst:

<ON_EVENT>

        <WITH>

            <EQUAL>

                <PROPERTY source="cs_typ" name="query.news_id"/>

                <NUMBER>3584</NUMBER>

            </EQUAL>

        </WITH>

        <DO>         

            <PROPERTY source='cs_subline' name='VISIBLE'/>

        </DO>

    </ON_EVENT>

Funktioniert aber leider immer noch nicht. Was kann ich tun, damit ich nur bei diesem Wert das Feld cs_subline ausblenden kann und bei allen anderen Einträgen nicht?

1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Als Workaround (wenn die anderen Varianten nicht funktionieren) könnte man notfalls folgendes versuchen (wenn es wirklich nur um diese eine bzw. wenige IDs geht):

Eine weitere Combobox mit hidden="yes" definieren, die eine identische Konfiguration wie die bereits vorhandene hat. Für diese Combobox dann im Formular unter "Vorgabewerte" eben diesen Datansatz auswählen.

Dann könnte ein einfacher <EQUAL>-Vergleich der sichtbaren und der nicht sichtbaren Combobox funktionieren.

View solution in original post

8 Replies
StefanSchulz
I'm new here

Hi,

welche FS-Version ist im Einsatz?

Datenbankbasierte Optionskomponenten werden nicht nativ für diesen Anwendungsfall unterstützt. Weder der Rückgabewert ENTRY noch VALUE liefern eine Zahl. Eigentlich müsste hier im Log-File eine entsprechende Meldung erscheinen. Eine Möglichkeit (ab späterem Stand in 5.0.3) ist, wenn die Angabe einer Schlüsselspalte (KEY-Tag) innerhalb der Datenbankinklusionsdefinition genutzt wird.

Bitte auch mal einen Verweis auf die Dokumentation geben, welche Stelle die Nutzung einer Abfrage zu diesem Zweck beschreibt. Eventuell liegt hier ein Missverständnis oder eine undeutliche Beschreibung vor.

Gruß

Stefan

0 Kudos

Hallo, wir benutzen FS 5.0 (Dynamische Formulare gibt es ja erst seit dieser Version).

In der Dokumentation von FS 5.0 unter Vorlagenentwicklung / Regeln / Formulareigenschaften <PROPERTY> gibt es einen Absatz "Sonderfall: Dynamische Werte mithilfe einer Datenbank-Abfrage setzen (Query)".

Darunter gibt es zwei Beispiele "Gericht / Lieferant" und "Stellvertreter ermitteln".

Unter letzterem habe ich mir das Beispiel abgeschaut und versucht eine Regel zu definieren.

Wenn man durch eine Regel eine Combobox mit Datenbankinhalt vorbelegen kann, dann müsste man doch auch den Wert aus der Combobox, die mit Datenbankinhalt gefüllt ist, heraus bekommen!?

0 Kudos

Hi,

5.0 ist mir zu ungenau, da fehlt noch die Minor Version Smiley Happy

In der neuesten Version (evtl. noch nicht freigegeben) ist dieser Abschnitt um entsprechende KEY-Konfiguration ergänzt.

Die Abfrage des Query-Werts könnte funktionieren, allerdings liefert das Property query.<variablenname> immer eine Zeichenkette zurück. Dafür muss obiger Vergleich mit TEXT an Stelle von NUMBER arbeiten.

Gruß

Stefan

0 Kudos
mbergmann
Crownpeak employee

Als Workaround (wenn die anderen Varianten nicht funktionieren) könnte man notfalls folgendes versuchen (wenn es wirklich nur um diese eine bzw. wenige IDs geht):

Eine weitere Combobox mit hidden="yes" definieren, die eine identische Konfiguration wie die bereits vorhandene hat. Für diese Combobox dann im Formular unter "Vorgabewerte" eben diesen Datansatz auswählen.

Dann könnte ein einfacher <EQUAL>-Vergleich der sichtbaren und der nicht sichtbaren Combobox funktionieren.

Hallo, der Vergleich mit <TEXT> hat nicht funktioniert 😞

Unsere Version ist diese: 5.0.210.55494

Aber dafür funktioniert der Vergleich mit dem versteckten Feld! 😄

Ich habe das nun im Formular so gelöst:

<CMS_INPUT_COMBOBOX name="cs_typ" allowEmpty="no" sortOrder="ascending" useLanguages="no">

    <CMS_INCLUDE_OPTIONS type="database">

      <LABELS>

        <LABEL lang="*">#item.typ_bezeichnung</LABEL>

      </LABELS>

      <QUERY name="further_content.news_types"/>

      <TABLE>further_content.news_typ</TABLE>

    </CMS_INCLUDE_OPTIONS>

    <LANGINFOS>

      <LANGINFO lang="*" label="Typ" description="Please choose the article type."/>

      <LANGINFO lang="DE" label="Typ" description="Bitte wählen Sie den Typ aus."/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

  <CMS_INPUT_COMBOBOX name="cs_typ_hidden" allowEmpty="no" hidden="no" sortOrder="ascending" useLanguages="no">

    <CMS_INCLUDE_OPTIONS type="database">

      <LABELS>

        <LABEL lang="*">#item.typ_bezeichnung</LABEL>

      </LABELS>

      <QUERY name="further_content.news_types"/>

      <TABLE>further_content.news_typ</TABLE>

    </CMS_INCLUDE_OPTIONS>

    <LANGINFOS>

      <LANGINFO lang="*" label="Typ" description="Please choose the article type."/>

      <LANGINFO lang="DE" label="Typ" description="Bitte wählen Sie den Typ aus."/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

Und in der Regel so:

<ON_EVENT>

        <WITH>           

            <EQUAL>

                    <PROPERTY source="cs_typ" name="VALUE"/>

                    <PROPERTY source="cs_typ_hidden" name="VALUE"/>

            </EQUAL>

        </WITH>

        <DO>         

            <PROPERTY source='cs_subline' name='VISIBLE'/>

        </DO>

    </ON_EVENT>

Funktioniert, dankeschön!

Hallo,

in der FS-Version von 5.2.1806.76861 und der Doku dazu finde ich keinen Eintrag für "KEY"

Gibt es mittlerweile eine konfortablere Lösung als eine versteckte Textbox?

Grüße,

Bianca

0 Kudos

Hallo,

falls nochmal jemand das gleiche Problem hat und die Doku noch nicht nachgepflegt ist, hier meine Lösung (ein Kollege hat mir in seinem Projekt die Konfiguration mit "KEY" gezeigt):

Formularbereich

      <CMS_INPUT_COMBOBOX name="pt_productWorld" hFill="yes" singleLine="no" useLanguages="no">

        <CMS_INCLUDE_OPTIONS type="database">

          <LABELS>

            <LABEL lang="*">#item.name</LABEL>

          </LABELS>

          <KEY>name_DE_CH</KEY>

          <TABLE>SWISSLOS.tt_product_world</TABLE>

        </CMS_INCLUDE_OPTIONS>

        <LANGINFOS>

          <LANGINFO lang="*" label="Produktwelt wählen"/>

        </LANGINFOS>

      </CMS_INPUT_COMBOBOX>

Regeln

<RULE>

<WITH>

<NOT>

<EQUAL>

<PROPERTY name="ENTRY" source="pt_productWorld"/>

<TEXT>Sporttip</TEXT>

</EQUAL>

</NOT>

</WITH>

<DO>

<NOT>

<PROPERTY name="VISIBLE" source="#form.pt_sporttip_group"/>

</NOT>

</DO>

</RULE>

Viele Grüße,

Bianca

0 Kudos

Moin,

das Tag "KEY" für CMS_INCLUDE_OPTIONS ist im ODFS dokumentiert unter:

Startseite / Vorlagenentwicklung / Formulare / Datenelemente / OPTIONS / DATABASE

Beste Grüße

Stefan

0 Kudos