Puede verificar el valor EndDate en la expresión del parámetro, y si es incorrecto, configúrelo en StartDate + 1 Month.
Algo así como:
= IIF(DateDiff(DateInterval.Month, Parameters!StartDate.Value, Parameters!EndDate.Value) = 0, Parameters!EndDate.Value, AddDate(DateInterval.Month, 1, Parameters!StartDate.Value))
Si lo que desea notificar al usuario, se puede colocar algún cuadro de texto oculto con el formato apropiado (rojo grande de la fuente) y el mensaje acerca de los parámetros de rango fecha incorrecta. En la expresión Oculto configurar
= (DateDiff(DateInterval.Month, Parameters!StartDate.Value, Parameters!EndDate.Value) <> 0)
Además, puede combinar ambas acciones con código personalizado:
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
Luego, en expresión de valor de parámetro:
= Code.ValidateDate(Parameters!StartDate.Value, Parameters!EndDate.Value)
en propiedad Value de tbDateParameterMessage cuadro de texto:
= Code.DateMessage
Y en la expresión propiedad Hidden:
= String.IsNullOrEmpty(Code.DateMessage)
EDITAR Pero si desea detener informe de ejecución, utilice el código personalizado:
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
Ha tomado de SQLServerCentral forum.
Pensé en eso, pero el problema es que el usuario podría no darse cuenta de que se ajustó la fecha. Lo que me gustaría hacer es algo así como mostrar un cuadro de diálogo diciéndoles que las fechas deben estar en el mismo mes. – jhale