0

我创建了一份 birt 报告。它包含一个名为“FromDate”的报告参数。用户将其插入到 fromat 中,如“dd/MM/yyyy”。我想从这个输入参数中获取年份(如果日期是 11/01/2013。我想从这个变量中提取 2013 年)并希望将此值传递给一个存储过程(即数据集)。我该怎么做。任何人都可以分享示例代码吗

4

5 回答 5

1

您可以像这样定义一个变量“selectedYear”:

var selectedValue = params["FromDate"].value;
var selectedValueArray = selectedValue.split("/");
selectedValueArray[2]

此代码通过“切割” / 上的参数值创建一个数组,然后选择年份(数组中的第二个值,这是我们从零开始计数的第三个块)。

然后,您可以vars["selectedYear"]在您的数据集上使用。

或者,如果您的数据集包含年份列表,您可以创建一个数据集

select distinct YEAR
from [dataSource]

并让您的参数从该列表中选择。这也将保证所选年份在范围内。

于 2013-04-16T11:03:03.580 回答
1

您可以将数据集参数映射到“编辑数据集”对话框的“参数”部分中的报告参数派生值:

  • 从数据集参数列表中选择存储过程年份输入参数,然后单击Edit...
  • 单击fx默认值旁边的按钮并选择Javascript Syntax
  • 输入公式BirtDateTime.year(params["FromDate"].value)

单击确定以确认每个对话框中的这些更改。(链接到报表参数选项需要保留与None该数据集参数一样,因为您不想将过程输入参数值设置为与任何报表参数完全相同。)

于 2013-04-17T07:22:49.267 回答
1

我过去遇到过类似的问题,但是我从不同的角度看待从存储在数据源中的日期作为动态参数驱动日期选择。通常,数据集中的日期采用一种格式,可以通过函数格式化/提取以给出年月日等。

于 2013-04-17T14:32:42.580 回答
0

我试过这个..在相应的存储过程中我将在输入参数上做一个子字符串(即FromDate)..它正在工作

于 2013-04-18T09:54:25.350 回答
0

在 sql 查询(数据集)中,使用这个

" split_part(?,'/',3)" , 我们将有日期参数代替 '?' . 因为,您必须意识到,Split_part 将使用分隔符 '/' 分割字符串。

于 2014-06-19T12:02:31.407 回答