我创建了一份包含开始日期和结束日期的SSRS报告。如果我提供结束日期<开始日期它将执行报告,如图所示
但是那个条件我需要弹出一个"请检查提供的开始日期和结束日期"。怎么做?
答案 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://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)