【发布时间】:2013-04-16 08:05:20
【问题描述】:
我创建了一份 birt 报告。它包含一个名为“FromDate”的报告参数。用户将其插入到 fromat 中,例如“dd/MM/yyyy”。我想从这个输入参数中获取年份(如果日期是 11/01/2013。我想从这个变量中提取 2013 年)并希望将此值传递给一个存储过程(即数据集)。我该怎么做。任何人都可以分享示例代码
【问题讨论】:
我创建了一份 birt 报告。它包含一个名为“FromDate”的报告参数。用户将其插入到 fromat 中,例如“dd/MM/yyyy”。我想从这个输入参数中获取年份(如果日期是 11/01/2013。我想从这个变量中提取 2013 年)并希望将此值传递给一个存储过程(即数据集)。我该怎么做。任何人都可以分享示例代码
【问题讨论】:
您可以像这样定义一个变量“selectedYear”:
var selectedValue = params["FromDate"].value;
var selectedValueArray = selectedValue.split("/");
selectedValueArray[2]
此代码通过“切割”/'s 上的参数值创建一个数组,然后选择年份(数组中的第二个值,这是我们从零开始计数的第三个块)。
然后您可以在您的数据集上使用vars["selectedYear"]。
或者,如果您的数据集包含年份列表,您可以创建一个数据集
select distinct YEAR
from [dataSource]
并从该列表中选择您的参数。这也将保证所选年份在范围内。
【讨论】:
"selectedYear",您可以通过添加属性绑定(通过数据集编辑器)在您的数据集中使用它:"select (what ever you like) from (the table you want) where year = " + vars["selectedYear"]。跨度>
您可以在编辑数据集对话框的参数部分将数据集参数映射到报告参数派生值:
Edit...。fx按钮并选择Javascript Syntax。BirtDateTime.year(params["FromDate"].value)。单击“确定”以在每个对话框中确认这些更改。 (对于该数据集参数,Linked To Report Parameter 选项需要保留为 None,因为您不想将过程输入参数值设置为与任何 Report Parameters 完全相同。)
【讨论】:
过去我也遇到过类似的问题,但是我从不同的角度看待从存储在数据源中的日期作为动态参数驱动日期选择。通常,数据集中的日期格式可以通过函数格式化/提取以给出年月日等。
【讨论】:
我试过这个..在相应的存储过程中,我将对输入参数(即 FromDate)做一个子字符串..它正在工作
【讨论】:
在sql查询(Data Set)中,使用这个
"split_part(?,'/',3)" ,我们将有日期参数代替'?' .你必须知道,Split_part 将使用分隔符 '/' 分割字符串。
【讨论】: