Вы можете проверить значение 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))
Если вы хотите просто уведомить пользователя, вы можете поместить некоторые скрытое текстовое поле с соответствующим форматированием (красный большой шрифт) и сообщение о параметрах даты некорректный диапазона. В Hidden выражении установлен
= (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 текстовое поле:
= Code.DateMessage
И в выражении Hidden собственности:
= String.IsNullOrEmpty(Code.DateMessage)
EDIT Но если вы хотите, чтобы остановить отчет работы, использовать этот пользовательский код:
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.
Я думал об этом, но проблема в том, что пользователь может не заметить, что дата была скорректирована. То, что я хотел бы сделать, это нечто вроде отображения диалога, в котором говорится, что даты должны быть в том же месяце. – jhale