我创建了一个birt报告。它包含一个名为“FromDate”的报告参数。用户将其插入像“dd / MM / yyyy”这样的文件中。我想从这个输入参数得到年份(如果日期是11/01 / 2013.i想要从这个变量中提取2013)并且想要将此值传递给一个存储过程(即数据集)。我该怎么做。任何人都可以分享示例代码
答案 0 :(得分:1)
您可以像这样定义变量'selectedYear':
var selectedValue = params["FromDate"].value;
var selectedValueArray = selectedValue.split("/");
selectedValueArray[2]
此代码通过“剪切”/上的参数值创建一个数组,然后选择年份(数组中的第二个值,这是我们从零开始计算的第三个块)。
然后,您可以在数据集上使用vars["selectedYear"]
。
或者,如果您的数据集包含年份列表,则可以创建数据集
select distinct YEAR
from [dataSource]
并让您的参数从该列表中选择。这也将保证所选年份在范围内。
答案 1 :(得分:1)
您可以将数据集参数映射到编辑数据集对话框的参数部分中的报告参数派生值:
Edit...
。fx
按钮,然后选择Javascript Syntax
。BirtDateTime.year(params["FromDate"].value)
。单击“确定”以在每个对话框中确认这些更改。 (链接到报告参数选项需要保留为该数据集参数的None
,因为您不希望将过程输入参数值设置为与任何报告参数完全相同。)
答案 2 :(得分:1)
我过去遇到了类似的问题,但是我从不同的角度看待将日期选择从数据源中存储的日期作为动态参数。通常情况下,数据集中的日期格式可以通过函数格式化/提取,以给出年月日等。
答案 3 :(得分:0)
我尝试了这个..在相应的存储过程中,我将在输入参数上做一个子串(即FromDate)..它正在工作
答案 4 :(得分:0)
在sql查询(数据集)中,使用此
" split_part(?,' /',3)" ,我们将使用日期参数代替'?&# 39; 。因为,您必须意识到,Split_part将使用分隔符' /'来划分字符串。