BIRT报表设计器空数据集脚本



我正在使用BIRT报表设计器4.4.0,我一直得到错误消息

org.eclipse.birt.report.engine.api。引擎异常:无法获取下一行数据。jdbcexception:无法向下移动到结果集中的下一行。SQL错误#1:结果集已关闭;org.firebirdsql.jdbc.FBSQLException:结果集已关闭

当BIRT试图从我知道为空的数据集中获取一行时。我发现这是BIRT的一个常见问题,并试图在数据集上使用beforeOpen脚本来防止空数据集,其中我可能做错了,因为它不起作用。我创建了一个vars["item"],想要计算OnFetch被调用的频率。

BeforeOpen:

vars["item"] = 0;

OnFetch:

vars["item"]++;

BeforeClose:

if (vars["item"] == 0)
{
  row[0] = "0";
}

不工作,因为没有行[0],我猜

当我编辑数据集的queryText为

SELECT "0" from kontrolle

这绝对应该产生一个数据集,我仍然得到了相同的"无法获取下一个数据行"的错误!

设计大致如下:

<table>
   <table>
      <table> here is the dataset in question
      </table>
   </table>
</table>

第二个表只通过一个参数绑定到第一个表,然而,第三个表有两个参数绑定到第二个表。

希望解释足够好,有人能提供一个解决方案。

如前所述,将defaultResultSetHoldable=true添加到连接属性中(例如在JDBC url中)。这指示Jaybird在默认情况下使用可保持的结果集创建连接(相当于在代码中调用connection.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT))。

我真的不知道BIRT,所以这只不过是对原因的一种有根据的猜测:

  1. 它可以期望可持有的结果集而不显式地请求或检查它们,并且在打开结果集后提交(在Jaybird中默认结果集在提交时关闭)
  2. BIRT可以使用autoCommit=true(默认),但不期望在同一连接上执行另一条语句时关闭结果集(这会导致关闭结果集等资源,并按照JDBC标准指定提交;在某些方面,这是第1点的专业化。

相关内容

  • 没有找到相关文章

最新更新