In Query auf Variable prüfen
Author: Anonymous
Publication Date: 8/18/2015 10:04
In meiner Query soll das Attribut "A_AM_NR" anstatt auf einen festen Wert auf eine Varible aus den Projekteinstellungen, "ps_wmv_anzeigemoeglichkeiten", überprüft werden. Diese Variable enthält einen String (mit Komma getrennte Werte: 2, 4, 26). Ich bekomme es nicht hin diese Variable in die Abfrage einzubauen. Kann mir da jemand helfen? Anbei das Coding:
<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="getAnzeige">
<CMS_PARAM name="schema" value="drucksachen_1"/>
<QUERY entityType="Anzeige">
<AND>
<EQ attribute="A_AM_NR" value="26"/>
<EQ attribute="drucksache.DsInaktiv" value="false"/>
</AND>
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
-
Author: Peter_Jodeleit - 8/18/2015 14:42
Der Anwendungsfall ist hier beschrieben. Im Beispiel mit "st_startDate" vom Typ "CMS_INPUT_DATE". Ist aber für CMS_INPUT_TEXT analog.
0 -
Author: Anonymous - 8/18/2015 15:03
Ich habe die entsprechende Zeile aus dem Beispiel-Coding eingefügt und angepasst und prüfe nun auf den definierten Parameter:
<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="getAnzeige">
<CMS_PARAM name="schema" value="drucksachen_1"/>
<CMS_VALUE_PARAM name="von" value="ps_wmv_anzeigemoeglichkeiten" />
<QUERY entityType="Anzeige">
<AND>
<EQ attribute="A_AM_NR" parameter="von"/>
<EQ attribute="drucksache.DsInaktiv" value="false"/>
</AND>
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
Beim Speichern erhalte ich folgende Fehlermeldung: de.espirit.common.xml.XmlParsingError: parameter 'von' not defined.
0 -
Author: mbergmann - 8/18/2015 22:49
Hallo,
Hier fehlt noch die Definition des "von" als Filterparameter in der Query
Viele Grüße
Michael
0 -
Author: Anonymous - 8/20/2015 9:09
Danke Herr Bergmann für den Hinweis, das war wirklich hilfreich.
Ich habe aber immer noch das Problem, dass ich einen String der Form "2, 3, 26, ..." habe und auf die Zahlen als Parameter prüfen muss.Coding sieht nun so aus:
<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="getAnzeige">
<CMS_PARAM name="schema" value="drucksachen_1"/>
<CMS_VALUE_PARAM name="von" value='ps_wmv_anzeigemoeglichkeiten' />
<QUERY entityType="Anzeige">
<FILTERPARAM parameter="von" datatype="java.lang.String"/>
<AND>
<EQ attribute="A_AM_NR" parameter="von"/>
<EQ attribute="drucksache.DsInaktiv" value="false"/>
</AND>
</QUERY>
</CMS_FUNCTION>
</CMS_HEADER>
Ich habe bereits versucht die value als 'ps_wmv_anzeigemoeglichkeiten.split(",")' zu setzen, aber das CMS kann damit wohl nichts anfangen. Es gibt mit nur eine leere Seite aus.
0 -
Author: Anonymous - 9/3/2015 10:07
Keine Ideen? Oder nich möglich?
0 -
Author: rbitdd - 9/3/2015 16:09
Also, die aktuelle Abfrage ist ja ein Vergleich von einem String mit dem Wert der Datenbank.
Verstehe ich dich richtig, dass die Werte in deinen PS eigentlich eine Liste von Elementen ist, die mit Zahlen in der Datenbank verglichen werden soll?
Also: kommaseparierte Liste von Werten als String verglichen mit Zahlen?
Wenn dem so ist, dann musst du den String auseinander nehmen und für jede einzelne Zahl eine Abfrage absenden. Ob der Vergleich mit String und Zahl erforderlich ist kann ich nicht beurteilen. Ich wage auch zu bezweifeln, dass das klappt. D.h. du müsstest aus dem String noch ne Zahl machen.
Korrigiere mich gerne, wenn ich in der falschen Richtung unterwegs bin.
Viele Grüße
Diana
0 -
Author: Anonymous - 9/4/2015 8:25
Das Vergleichen von String und Zahl ist notwendig und funktioniert.
Meine Kollegin meinte, dass sie etwas ähnliches mit einer Funktion gelöst hat. Die Funktion hat die Query dann immer mit einem Wert des gespliteten Strings aufgerufen und die Funktion wurde dann in einer for Schleife aufgerufen.
Geht das nicht einfacher? SQL kann ja mit
SELECT column
FROM table
WHERE column IN (comma-seperated String);
genau das was ich brauche. Aber wie mach ich das in FirstSpirit?
0 -
Author: rbitdd - 9/4/2015 8:36
Hallo Fabian,
nun, es gib keinen IN-Operator in FirstSpirit.
Das heißt, dass du, wie deine Kollegin es auch schon gesagt hat, es mit einer Funktion lösen musst.
Alternativ steht es dir natürlich frei einen entsprechenden Feature-Request zu erstellen. Dieser würde das Problem aber eher langfristig lösen und dir jetzt nicht weiterhelfen.
Viele Grüße
Diana
0 -
Author: Anonymous - 9/4/2015 8:42
Ok Diana, danke für die Hilfe.
0
Please sign in to leave a comment.
Comments
9 comments