在ssrs报告中报告参数验证

时间:2015-05-27 09:05:04

标签: sql sql-server sql-server-2008 reporting-services parameters

我创建了一份包含开始日期和结束日期的SSRS报告。如果我提供结束日期<开始日期它将执行报告,如图所示 enter image description here

但是那个条件我需要弹出一个"请检查提供的开始日期和结束日期"。怎么做?

4 个答案:

答案 0 :(得分:6)

单击“报告菜单”,然后单击“报告属性”  转到代码选项卡 并根据您的要求添加类似的代码:

Function CheckDateParameters(StartDate as Date, EndDate as Date) as Integer
Dim msg as String
     msg = ""
     If (StartDate > EndDate)  Then
 msg="Start Date should not be later than End Date"
     End If
     If msg <> "" Then 
 MsgBox(msg, 16, "Report Validation")
 Err.Raise(6,Report)                    'Raise an overflow
     End If
End Function

按照步骤

1。)转到报告参数并添加数据类型为字符串的参数。

2。)选中隐藏复选框和允许空白值ckeckbox。

3.。)从默认值中选择Non-Queried单选按钮,然后按FX按钮并粘贴此代码。

= CODE.CheckDateParameters(.value的,。价值)

然后按OK。

参见参考链接:

Easy Step by Step SSRS Parameter Validation Using Code & Conditional DataSet

答案 1 :(得分:0)

在使用SQL / Server时,我会在另一个可能的解决方案中将此问题解答。如果您只想引发错误,则只需在SQL顶部添加类似这样的内容,即可修改查询SQL以在SQL / Server端引发错误。

IF @ParEndDate < @ParStartDate
BEGIN
   RAISERROR('Please check the start date and end date provided', 16, 1);
   RETURN;
END;

查询将不会运行,并且错误消息将显示在报表正文中。

答案 2 :(得分:0)

Ciarán,感谢您的建议,但是问题是您仍然在访问数据库。我遇到了这两个链接,发现它们对解释如何在不打数据库的情况下在SSRS中进行验证有更多帮助。

此链接显示所有内容,但不清楚如何将验证参数与存储的proc结合使用: http://geekswithblogs.net/Compudicted/archive/2012/08/14/validate-ssrs-report-input-parameters-the-proper-way.aspx

此链接清除了如何在存储的过程中使用验证参数: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/01b37f60-9048-4c54-8d54-574b5fc71de5/how-to-call-a-stored-proc-conditionally-based-on-a-parameter-validation-or-using-a-stored-proc-in?forum=sqlreportingservices

添加了有用的链接...我需要使用正则表达式进行验证,并发现此链接确实有用: https://regex101.com/

答案 3 :(得分:0)

我不知道这是否能解决您的问题,但一个简单的方法是使用几个报表元素的可见性特征。

对于您数据区域中的对象,根据您的数据验证设置可见性。还要创建一个 textbox 来抱怨违规者,并将其可见性设置为与您的表格或矩阵的可见性相反。

在 Tablix Properties、Visibility 中,将 Hidden 的值设置为:

=Iif(Parameters!EndDate.Value > Parameters!StartDate.Value, False, True)

然后对于您的验证文本框可见性,将隐藏的值设置为:

=Iif(Parameters!EndDate.Value > Parameters!StartDate.Value, True, False)