gpt4 book ai didi

reporting-services - 报表服务参数约束

转载 作者:行者123 更新时间:2023-12-04 07:53:42 25 4
gpt4 key购买 nike

我有一个带两个日期/时间参数的报表服务(SQL 2008)报表-begindate和enddate。我需要将结束日期限制为与开始日期相同的月份和年份。这似乎应该是一件容易的事,但我无法弄清楚。

目前,我正在检查传递给存储过程的参数,如果两个datetime参数不在同一月份和年份,则会引发错误。我正在寻找一种更优雅的方式来实现这一目标。

最佳答案

您可以检查参数表达式中的EndDate值,如果不正确,请将其设置为StartDate + 1 Month。
就像是:

= IIF(DateDiff(DateInterval.Month, Parameters!StartDate.Value, Parameters!EndDate.Value) = 0, Parameters!EndDate.Value, AddDate(DateInterval.Month, 1, Parameters!StartDate.Value))

如果只想通知用户,则可以放置一些具有适当格式(红色大字体)的隐藏文本框,以及有关日期参数范围错误的消息。在隐藏的表达式集中
= (DateDiff(DateInterval.Month, Parameters!StartDate.Value, Parameters!EndDate.Value) <> 0)

另外,您可以将两个操作与自定义代码结合使用:

Public DateMessage As String

Public Function ValidateDate(StartDate As DateTime, EndDate As DateTime) As DateTime
Dim ResultDate As DateTime
If (DateDiff(DateInterval.Month, StartDate, EndDate) <> 0) Then
ResultDate = AddDate(DateInterval.Month, 1, StartDate)
DateMessage = String.Format("End Date parameter value {0}
was out of range and was changed to {1}", EndDate, ResultDate)
Else
ResultDate = EndDate
End If
End Function

然后,在参数值表达式中:
= Code.ValidateDate(Parameters!StartDate.Value, Parameters!EndDate.Value)

在tbDateParameterMessage文本框的Value属性中:
= Code.DateMessage

并在“隐藏”属性表达式中:
= String.IsNullOrEmpty(Code.DateMessage)

编辑
但是,如果要停止运行报表,请使用以下自定义代码:

Public Function CheckDate(SDate as Date, EDate as Date) as Integer
Dim msg as String
msg = ""
If (SDate > EDate) Then
msg="Start Date should not be later than End Date"
End If
If msg <> "" Then
MsgBox(msg, 16, "Parameter Validation Error")
Err.Raise(6,Report) 'Raise an overflow
End If
End Function

它来自 SQLServerCentral forum

关于reporting-services - 报表服务参数约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/606621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com