0

オプションのパラメーターをクエリの where 句に追加しようとしています。それぞれがテストされ、個別に機能しますが、ユーザーがどれを入力してもレポートが実行されるように、それらをクエリに組み込むにはどうすればよいですか。

パラメータは次のとおりです。

 $P!{qparam_TickerValue} , $P!{qparam_CusipValue}, $P!{qparam_DescValue};

これは、デフォルト値式がどのように見えるかです (TickerValue):

$P{qparam_Ticker}=="" ? "" : "and p.Ticker='"+$P{qparam_Ticker}+ "'"

これは、完了しようとしているクエリ ブロックです。

    where f.ParentID=$P{qparam_PlanParent}
    and cpp.PeriodBeginDate>=$P{qparam_BeginDateString}
    and cpp.PeriodEndDate<=$P{qparam_EndDateString}
    $P!{qparam_CusipValue}
    $P!{qparam_TickerValue} ;

解決しました!

Java の専門家の助けを借りて、これを思いつきました。

(($P{qparam_Ticker}==null) || $P{qparam_Ticker}.isEmpty())
? (
(($P{qparam_Cusip}==null) || $P{qparam_Cusip}.isEmpty())
? (
(($P{qparam_Desc}==null) || $P{qparam_Desc}.isEmpty())
? ""
: " and p.Description='" + $P{qparam_Desc} + "'"
)
: " and cpp.SecurityId='" + $P{qparam_Cusip} + "'"
)
: " and p.Ticker='" + $P{qparam_Ticker} + "'"

どのような条件が満たされているかを確認し、適切なステートメントをクエリ ブロックに割り当てます。

4

0 に答える 0