Jaspersoft Studio 6.2.2 数据集对话框中不会显示数据

Data will not shown at Jaspersoft Studio 6.2.2 data set dialog

我突然遇到了 Jaspersoft Studio 数据集对话框的以下问题:

第一: 在 运行 第一个查询 select KN_Perzentile from "Kennzahl" where KN_ID = 215 and KN_RefWert1 = 8.3 并单击刷新预览数据后,Studio 显示读取了 2 个字段(应该是一个事实上,当我测试针对 DB 的查询时),但数据根本不会显示!

其次: 运行 任何其他查询那里遇到错误,说字段KN_Perzentile 没有找到!第二次查询中根本不会询问此字段!

两个查询都针对数据库进行了测试并且正确无误。我只在一个项目上遇到这些问题。

变量vVisual应该从数据中读取值base.And构建路径中的javaclass应该读取他的变量并将其用于创建图表。但数据不会添加到图表中。我猜那是因为 jasper 没有读 KN_Perzentile。 这是生成后 Visual Basic = 0 的图表: 这是 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 Class:

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));
}

}

第一

我没有看到结果中有任何字段被使用。 $V{Pie} 仅引用自身并在报告中使用 Detail 带,$V{vVisual} 正在计算但未在任何地方使用。

由于此结构,未显示任何字段。

第二

有一个名为 KN_Perzentilefield 定义。如果您 更改您的查询 并且您的查询不再 return 该字段(具有正确的数据类型),您将得到您所看到的错误。

编辑

根据documentation for scriptlets,有两个规则要遵守:

The important part when ensuring a variable in your report template is filled by a Scriptlet (or subreport) is to ensure the Variable has a calculation type of 'System' in the report design:

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

Also notice that there is no Variable Expression. Make sure you remember these two points when creating Variables in your own report with values supplied by Scriptlets.

在此之后,system 变量的 variableExpression 应该被删除。