特定单元格中的BIRT结果集值

时间:2014-03-28 22:52:26

标签: resultset birt

我的查询返回location_cd(字符串)和item_count(int)。我只需要结果中的某些行,然后我需要它们显示在我的布局中的特定位置,所以我不认为表解决方案会起作用。我可以确定将值放在结果集的特定行的位置吗?

我正在使用网格来显示许多字段的值。我似乎无法从结果中获取值来显示。网格绑定到结果集。我甚至尝试将单元格绑定到结果集,但这也不起作用。

我在查询编辑器中检查了预览中显示的结果集,所以我知道查询有效。完整正确的结果集显示我是否在页面上放置了一个表格。

我尝试在单元格中插入动态文本或数据对象并使用表达式:

dataSetRow["location_cd"]=="3SD"?dataSetRow["item_count"]:""

这会返回一个空白,似乎没有评估。我测试了它:

dataSetRow["location_cd"]=="3SD"?dataSetRow["item_count"]:"BLANK"

并且'BLANK'出现在那个单元格中。

dataSetRow [“location_cd”]和dataSetRow [“item_count”]将显示结果集第一行中的location_cd和item_count。 row.outer []做了同样的事情。显然我现在只是在攻击这份报告。

一位同事建议她在这样的地方使用JAVA if语句,但我也无法使用它。

任何可以让我走上正确道路的想法或建议?

由于

2 个答案:

答案 0 :(得分:2)

一个优雅的选择是使用存储数据集结果的HashMap。

  • 声明一个名为“values”的报表变量,并将新的hashmap作为默认值(参见下图)
  • 在数据集的onFetch脚本中填写值:vars["values"].put(row["location_cd"],row["item_count"]);
  • 使用以下表达式在报告的任何位置插入新数据元素:vars["values"].get("myFavoriteLocationCD");

虽然重要的是要注意数据集应该由报告在这些数据元素之前触发。

enter image description here

答案 1 :(得分:1)

您要显示的特定行在网格内的“文本”字段中指定。只需在网格中拖放“文本”字段即可。如果将要显示的字段绑定到网格,则网格内的“文本”字段将继承其父级(网格)的绑定,因此您可以在“文本”字段中自动访问绑定。

您可以尝试以下步骤,也许这样做。

  1. 请勿使用“动态文字”字段,而是使用常规的“文字”字段
  2. 确保您使用的查询字段绑定到网格(您说您已经这样做了)
  3. 打开“文字”字段
  4. 将预选的下拉条目“自动”更改为“HTML”
  5. 将预选的下拉条目“格式化”更改为“动态文本”
  6. 将您的代码包裹在<value-of format="HTML"> your code goes here... </value-of>
  7. 注意:如果能够访问绑定到网格的字段,则应检入“文本”字段的“表达式构建器”。如果它们不可用......你的绑定出了问题。避免将查询记录绑定到单元格,这会让你发疯。

    如果要显示列表,请确保未在网格行中设置恒定高度。将高度设置为100%,而不是行动态高度。

    优化查询的想法是什么,只显示您想要的结果,而不需要使用java脚本过滤它们?如果您不需要在其他地方使用过滤结果,我认为这将是更清晰的解决方案。