2016-06-24 7 views
0

ダイアログ設定6.2.2データを示していないだろうスタジオは2つのフィールドが読み取られていることを示しています(これは実際にDBに対してクエリをテストしたときに1つにする必要があります)が、データはまったく表示されません。データは、Jaspersoft Studioので、私はJaspersoft Studioのデータ設定ダイアログで、突然、次の問題に直面している

第二:はKN_Perzentileが見つからないフィールドと言って、エラーが発生した他のクエリを実行しています!このフィールドは、2番目のクエリではまったく尋ねられません!

両方のクエリがデータベースに対してテストされ、正しい。私は1つのプロジェクトにしかこれらの問題がありません。

変数vVisualは、データベースから値を読み取る必要があります。ビルドパスにあるjavaクラスは、変数を読み込んでチャートを作成するために使用する必要があります。しかし、データはグラフに追加されません。ジャスパーがKN_Perzentileを読んでいないからです。 このgenarating後= 0のVisual Basicでのチャートである。 enter image description here ここではjrxmlです:

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="JFreeReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1edc4d15-06d0-46cf-8d57-179fd0bed566"> 
<scriptlet name="BoxPlotScript" class="testProjektIman.toc.JFreeChartScriptlet"/> 
<queryString> 
    <![CDATA[select KN_Perzentile from "Kennzahl" where KN_ID = 215 and KN_RefWert1 = 8.3 
]]> 
</queryString> 
<field name="KN_Perzentile" class="java.lang.Double"/> 
<variable name="Pie" class="net.sf.jasperreports.engine.JRRenderable" calculation="System"> 
    <variableExpression><![CDATA[$V{Pie}]]></variableExpression> 
    <initialValueExpression><![CDATA[$V{Pie}]]></initialValueExpression> 
</variable> 
<variable name="vVisual" class="java.lang.Double" calculation="First"> 
    <variableExpression><![CDATA[$F{KN_Perzentile}]]></variableExpression> 
    <initialValueExpression><![CDATA[$F{KN_Perzentile}]]> </initialValueExpression> 
</variable> 
<detail> 
    <band height="290" splitType="Stretch"> 
     <image scaleImage="Clip" hAlign="Center"> 
      <reportElement x="60" y="50" width="440" height="215" uuid="60c9de91-e7ad-4ffb-81fd-109a381532b6"/> 
      <imageExpression><![CDATA[$V{Pie}]]></imageExpression> 
     </image> 
    </band> 
</detail> 
</jasperReport> 

Javaクラス:私は見ていない

public class JFreeChartScriptlet extends JRDefaultScriptlet 

{ 

@Override 
public void afterReportInit() throws JRScriptletException { 
    Double testVb = 0.0; 
    DefaultPieDataset dataset = new DefaultPieDataset(); 
    testVb = (Double) this.getVariableValue("vVisual"); 
    dataset.setValue("Java", new Double(43.2)); 
    dataset.setValue("Visual Basic", testVb); 
    dataset.setValue("C/C++", new Double(17.5)); 
    dataset.setValue("PHP", new Double(32.5)); 
    dataset.setValue("Perl", new Double(1.0)); 

    JFreeChart chart = 
     ChartFactory.createPieChart3D(
       "Pie Chart 3D Demo 1", 
       dataset, 
       true, 
       true, 
       false); 

    PiePlot3D plot = (PiePlot3D) chart.getPlot(); 
    plot.setStartAngle(290); 
    plot.setDirection(Rotation.CLOCKWISE); 
    plot.setForegroundAlpha(0.5f); 
    plot.setNoDataMessage("No data to display"); 
    this.setVariableValue("Pie", new JCommonDrawableRenderer(chart)); 
} 

} 

答えて

1

まず

結果からのフィールドの使用。 $V{Pie}はそれ自体を参照しており、レポートDetailのバンド$V{vVisual}で使用されていますが、どこにも使用されていません。

この構造のため、フィールドは表示されません。

セカンド

KN_Perzentileと呼ばれる定義されたfieldがあります。 クエリがに変更され、クエリでこのフィールド(正しいデータ型)が返されない場合は、表示されているエラーが発生します。

EDIT

documentation for scriptletsによると、遵守するための2つのルールがあります

レポートテンプレートに変数を確保することは、スクリプトレット(またはサブレポート)によって満たされている重要な部分は、レポートデザインで変数の計算タイプが「システム」であることを確認することです。

<variable name="AllCities" class="java.lang.String" calculation="System"/> 

また、tここにははありません。変数式です。スクリプトレットが提供する値で独自のレポートに変数を作成するときは、この2つの点を覚えておいてください。これに続いて

system変数のvariableExpressionを削除する必要があります。

+0

私はJavaクラスを更新して入れました。 vVisualはDBから値を取得することになっており、Javaクラスはこの値を渡して円グラフを描画するために使用します – Iman

関連する問題