1

ジャスパーレポートには、次のようなSQL文があります。

SELECT * FROM table $P!{my_where}

私のphpプログラムでは、レポートを次のように呼び出しています。

    JasperPHP::process(
        base_path() . '/app/reports/report.jasper', 
        false,
        array("pdf"),
        array("my_where" => "WHERE field = value"),
        \Config::get('database.connections.mysql')
        )->execute();

次に、これはエラーメッセージです:

レポート パラメータの形式が間違っています。

簡単な方法でそれを行うと、つまり次のようになります。

レポートでは:

SELECT * FROM table WHERE $P!{field} = $P{value}

PHP の場合:

    JasperPHP::process(
        base_path() . '/app/reports/report.jasper', 
        false,
        array("pdf"),
        array("field" => $my_field, "value" => $my_value),
        \Config::get('database.connections.mysql')
        )->execute();

問題は、いくつかのフィールドから動的に where 句を作成する必要があるため、「where」パラメーターのみを渡すことが必須です。

何か案が?

4

1 に答える 1

1

解決済み: パラメータを二重引用符で囲む必要があります:

$my_where = '"' .  $my_where . '"';

JasperPHP::process(
    base_path() . '/app/reports/report.jasper', 
    false,
    array("pdf"),
    array("my_where" => $my_where),
    \Config::get('database.connections.mysql')
    )->execute();
于 2015-04-10T16:12:07.283 に答える