ssrs 报表中的报表参数验证
Report Parameter validation in ssrs report
我创建了一份具有开始日期和结束日期的 SSRS 报告。如果我提供结束日期 < 开始日期,它将执行报告,如图所示
但是那个条件我需要显示一个弹出窗口 "Please Check the start date and end date provided"。如何做到这一点?
单击报告菜单,然后单击报告属性。
转到代码选项卡
并根据您的要求添加类似的代码:
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.) 选中隐藏复选框和允许空白值复选框。
3.) 从默认值中选择非查询单选按钮,然后按 FX 按钮并粘贴此代码。
=CODE.CheckDateParameters(<parameterStartdate>.Value,<parameterEnddate>.Value)
然后按确定。
参见参考文献 Link:
Easy Step by Step SSRS Parameter Validation Using Code & Conditional DataSet
我回答这个问题是为了在与 SQL/Server 合作时加入另一个可能的解决方案。如果您只想抛出一个错误,那么只需修改您的查询 SQL 以在 SQL/Server 端引发错误,方法是在 SQL...[= 的顶部添加类似这样的内容11=]
IF @ParEndDate < @ParStartDate
BEGIN
RAISERROR('Please check the start date and end date provided', 16, 1);
RETURN;
END;
查询不会运行并且错误消息将显示在报表正文中。
Ciarán,感谢您的建议,但问题是您仍在访问数据库。我遇到了这两个 link,我发现它们对解释如何在不访问数据库的情况下在 SSRS 中进行验证更有帮助。
这个 link 显示了所有内容,除了不清楚如何将验证参数与存储过程一起使用。:
http://geekswithblogs.net/Compudicted/archive/2012/08/14/validate-ssrs-report-input-parameters-the-proper-way.aspx
此 link 清除了如何将验证参数与存储过程一起使用。:
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
添加了有用的 link...我需要使用正则表达式进行验证,发现这个 link 非常有用:
https://regex101.com/
我不知道这是否能解决您的问题,但一个简单的方法是使用几个报表元素的可见性特征。
对于您数据区域中的对象,根据您的数据验证设置可见性。还创建一个 textbox
抱怨违规者并将其可见性设置为与 table 或矩阵的可见性相反。
在 Tablix 属性的可见性中,将隐藏的值设置为:
=Iif(Parameters!EndDate.Value > Parameters!StartDate.Value, False, True)
然后对于验证文本框可见性,将隐藏的值设置为:
=Iif(Parameters!EndDate.Value > Parameters!StartDate.Value, True, False)
我创建了一份具有开始日期和结束日期的 SSRS 报告。如果我提供结束日期 < 开始日期,它将执行报告,如图所示
但是那个条件我需要显示一个弹出窗口 "Please Check the start date and end date provided"。如何做到这一点?
单击报告菜单,然后单击报告属性。
转到代码选项卡
并根据您的要求添加类似的代码:
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.) 选中隐藏复选框和允许空白值复选框。
3.) 从默认值中选择非查询单选按钮,然后按 FX 按钮并粘贴此代码。
=CODE.CheckDateParameters(<parameterStartdate>.Value,<parameterEnddate>.Value)
然后按确定。
参见参考文献 Link:
Easy Step by Step SSRS Parameter Validation Using Code & Conditional DataSet
我回答这个问题是为了在与 SQL/Server 合作时加入另一个可能的解决方案。如果您只想抛出一个错误,那么只需修改您的查询 SQL 以在 SQL/Server 端引发错误,方法是在 SQL...[= 的顶部添加类似这样的内容11=]
IF @ParEndDate < @ParStartDate
BEGIN
RAISERROR('Please check the start date and end date provided', 16, 1);
RETURN;
END;
查询不会运行并且错误消息将显示在报表正文中。
Ciarán,感谢您的建议,但问题是您仍在访问数据库。我遇到了这两个 link,我发现它们对解释如何在不访问数据库的情况下在 SSRS 中进行验证更有帮助。
这个 link 显示了所有内容,除了不清楚如何将验证参数与存储过程一起使用。: http://geekswithblogs.net/Compudicted/archive/2012/08/14/validate-ssrs-report-input-parameters-the-proper-way.aspx
此 link 清除了如何将验证参数与存储过程一起使用。: 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
添加了有用的 link...我需要使用正则表达式进行验证,发现这个 link 非常有用: https://regex101.com/
我不知道这是否能解决您的问题,但一个简单的方法是使用几个报表元素的可见性特征。
对于您数据区域中的对象,根据您的数据验证设置可见性。还创建一个 textbox
抱怨违规者并将其可见性设置为与 table 或矩阵的可见性相反。
在 Tablix 属性的可见性中,将隐藏的值设置为:
=Iif(Parameters!EndDate.Value > Parameters!StartDate.Value, False, True)
然后对于验证文本框可见性,将隐藏的值设置为:
=Iif(Parameters!EndDate.Value > Parameters!StartDate.Value, True, False)