在Jaspersoft Studio中,Sql server过程返回的字段少于预期

时间:2016-08-10 15:08:58

标签: sql-server stored-procedures jasper-reports jaspersoft-studio

我在Jaspersoft Studio(JSS)中运行sql server程序,但Query Dialog只显示一个字段。

它在JSS中的表现如何:

Procedure on Jasper Studio - show only one field.

在SQL SERVER Management Studio中,它可以正常工作。该程序返回十个以上的字段......

Procedure on SQL SERVER Management Studio

有没有人见过类似案件?可能会发生什么?

我写了一个java代码来检查,并通过jdbc java应用程序,正常显示所有字段:

 Connection conn = VAGASConnectionFactory.getNewConnectionSQLDRIVER(VAGASConnectionFactory.AMBIENTE.DESENV);
    CallableStatement cs = conn.prepareCall("{call pr_cria_tabela_relatorio_parametrizado(90918)}");
    ResultSet rs = cs.executeQuery();
    while(rs.next()) {
        System.out.println(rs.getString(1) + "," + rs.getString(2) + "," + rs.getString(3) + "," + rs.getString(4));
    }

此代码的结果正确运行:

JéssicaAlba,28/04 / 1981,35,Condado

Jim Carrey,17/01 / 1962,54,Goiana

但在Jasper Studio中,只显示一个字段 ....: - /

单击“读取字段”时的Jasper Studio日志:

Start ClassPath Mapping
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-chart-themes-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-fonts-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/55/1/.cp/lib/jasperreports-functions-6.1.1.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/40/1/.cp/lib/js-common.jar
Mapping: Archive: file:/home/diego.queres/.eclipse/1695504528/configuration/org.eclipse.osgi/bundles/40/1/.cp/lib/js-extra-classes.jar
End ClassPath Mapping

我正在使用Jasper Studio 6.1.1。我尝试过使用Jasper Studio 6.3.0,也没有成功。

1 个答案:

答案 0 :(得分:0)

经过多次尝试后,我发现如果有一个复杂的存储过程(如我的话),查询编辑器仅限于读取字段。由于我的过程使用游标并在字符串中动态生成sql查询,因此查询编辑器会妨碍读取过程方案。

我决定执行以下操作:将查询SQL打印到过程输出(print @sql)。然后我剪切并粘贴在查询编辑器窗口中运行的查询(在过程输出上)(而不是过程调用," exec过程....")。因此,查询编辑器可以读取查询的字段。查询编辑器读取字段后,我删除查询SQL并再次插入过程调用,"执行程序...."

现在它起作用了: - )