質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JasperReports

JasperReportsはオープンソースの帳票生成ツールです。JasperReportはPDF, HTML, Microsoft Excel, ODT, XML等の様々なフォーマットのものをエクスポートします。

Q&A

1回答

15336閲覧

JasperReports 帳票出力の際のエラーについて

yadrop

総合スコア57

JasperReports

JasperReportsはオープンソースの帳票生成ツールです。JasperReportはPDF, HTML, Microsoft Excel, ODT, XML等の様々なフォーマットのものをエクスポートします。

0グッド

0クリップ

投稿2017/03/22 02:09

編集2017/03/22 02:48

お世話になります。

JasperReportsにて、エラーの原因が分からずに出力に失敗してしまいます。

実施している作業としては、現在使用している帳票に、項目を追加して印刷したいと思っております。
(現行は正常に稼働しています。)

その為、新たに追記した点について不備があるのは明らかなのですが、その特定ができず、、
アドバイスや指摘などご教示頂けたらと思います。

実施したい内容としては以下になります。

①DBからフラグの値を取得し、分岐

SELECT ~ ,flg AS flg ,IF( flg = 1 ,'○' ,'×' ) AS hoge

②宣言部分

<field name="flg" class="java.lang.Boolean"/>

③フラグの値でデザインを分岐

<rectangle> <reportElement key="" x="0" y="300" width="400" height="30" forecolor="#FFCC00" backcolor="rgba(255, 255, 255, 0.0)" uuid="hoge1"> <property name="com.jaspersoft.studio.unit.height" value="pixel"/> <printWhenExpression><![CDATA[$F{flg} == false]]></printWhenExpression> </reportElement> </rectangle> <staticText> <reportElement x="3" y="300" width="400" height="30" uuid="hoge2"> <property name="com.jaspersoft.studio.unit.width" value="pixel"/> <printWhenExpression><![CDATA[$F{flg} == false]]></printWhenExpression> </reportElement> <textElement> <font size="6"/> </textElement> <text><![CDATA[フラグが0の時に出力]]></text> </staticText>

DBはMySQLを使用しています。

エラー内容は以下となっています。
```ここに言語を入力
Error evaluating expression for source text: new java.lang.Integer(1)

Integer(1)の部分についてですが、該当するソースではIntegerを使用していません。 また、このflgはDBではTINYINTで登録されていますが、JaspersoftのDatasetQuery?を用いたところ Boolean型で認識されるようなので宣言部分はBooleanで表記しています。 JapserReports初心者の為、説明など至らない部分が多くあると思いますが、 情報の不足などございましたらご指摘ください。 何卒、宜しくお願い致します。 追記:変更点については以下になります。 都合上、名称やサイズなどは代用しています。 ①SELECT文に追記 ```ここに言語を入力 SELECT ~ ,flg AS flg ,IF( flg = 1 ,'○' ,'×' ) AS hoge

②宣言

<field name="flg" class="java.lang.Boolean"/> <field name="hoge" class="java.lang.String"/>

③コンテンツ追加 1

```ここに言語を入力
<line> <reportElement x="0" y="250" width="400" height="1" forecolor="#DA0023" uuid="hoge1"> <property name="com.jaspersoft.studio.unit.height" value="pixel"/> <property name="com.jaspersoft.studio.unit.width" value="pixel"/> <property name="com.jaspersoft.studio.unit.y" value="pixel"/> </reportElement> </line> ```

④コンテンツ追加 2

```ここに言語を入力
<line> <reportElement x="60" y="250" width="1" height="15" forecolor="#DA0023" uuid="hoge2"> <property name="com.jaspersoft.studio.unit.width" value="pixel"/> <property name="com.jaspersoft.studio.unit.height" value="pixel"/> </reportElement> </line> ```

⑤コンテンツ追加 3 (ここで①のAS hogeを表示しています)
```ここに言語を入力
<staticText>
<reportElement x="0" y="250" width="50" height="15" uuid="hoge3">
<property name="com.jaspersoft.studio.unit.height" value="pixel"/>
</reportElement>
<textElement>
<font fontName="Meiryo" size="7"/>
</textElement>
<text><![CDATA[サンプルテキスト]]></text>
</staticText>
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement x="60" y="250" width="125" height="15" uuid="hoge4"/>
<textElement>
<font fontName="Meiryo" size="7"/>
</textElement>
<textFieldExpression><![CDATA[$F{hoge}]]></textFieldExpression>
</textField>

⑥コンテンツ追加 4 ```ここに言語を入力 <rectangle> <reportElement key="" x="0" y="300" width="400" height="30" forecolor="#FFCC00" backcolor="rgba(255, 255, 255, 0.0)" uuid="hoge5"> <property name="com.jaspersoft.studio.unit.height" value="pixel"/> <printWhenExpression><![CDATA[$F{flg} == false]]></printWhenExpression> </reportElement> </rectangle> <staticText> <reportElement x="3" y="280" width="400" height="25" uuid="hoge6"> <property name="com.jaspersoft.studio.unit.width" value="pixel"/> <printWhenExpression><![CDATA[$F{flg} == false]]></printWhenExpression> </reportElement> <textElement> <font size="6"/> </textElement> <text><![CDATA[フラグが0の時に表示する]]></text> </staticText>

その他の差分としては編集日時が変わったという程度のものなので記載はしておりません。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaya_ohashi

2017/03/22 02:30

回答にも書きましたが、私の環境ではエラーが再現しないため、提示されていない他の部分に原因があるように思えます。見せれる範囲はここまででしょうか?
yadrop

2017/03/22 02:49

ご連絡頂きありがとうございます。追記させていただきましたので、ご確認頂けますと幸いです。
masaya_ohashi

2017/03/22 02:58

JasperSoft Studio上で実行されておりますか?それとも帳票印刷の実行環境は別ですか?
yadrop

2017/03/22 03:12

実行環境は別になります。
masaya_ohashi

2017/03/22 03:40

編集前のファイルを同環境で今実行してもエラーは起きませんか?
masaya_ohashi

2017/03/22 03:41

具体的にいうと、以前動いていたときと、今とでJasperの編集だけでなく環境になにか変化は起きていませんか?
yadrop

2017/03/22 03:44

編集前ファイルを現在実行してもエラーは発生致しません。jasperの内容については問題なさそうということでしょうか。。?
masaya_ohashi

2017/03/22 04:12

私が見る限りではエラーが起きそうなところが見当たりません…SubReportを使っている箇所とかがあったりしますか?
masaya_ohashi

2017/03/22 04:13

また、SELECT文のIFの部分を固定で「”◯" AS hoge」に書き換えた場合、エラーが起きますか?
guest

回答1

0

もうしわけありません、以下の回答は誤回答のようです。自分の環境でIF構文で試した結果動作したので、おそらく原因は他にあります。


,IF( flg = 1 ,'○' ,'×' ) AS hoge

ここです。IFという構文はMySQLにはありません(追記:嘘つきました。ありますねIF構文)。JasperのIFとして解釈されており、=で比較するのがエラーです。さらに、Jasperとして処理できるのはクエリに渡す前処理であり、このようにSELECT結果であるflgをまるばつに変換するような処理はDatasetQueryに書くことはできません。
やるならMySQLのルールに則ってまるばつに書き換えましょう。

MySQL

1CASE WHEN flg=1 THEN "◯" ELSE "×" END AS hoge

投稿2017/03/22 02:21

編集2017/03/22 02:30
masaya_ohashi

総合スコア9210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問