Questions & Answers

SOLVED
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

Type a product name