我在SSRS报告参数日期格式方面遇到了一些问题。我有一个在VB.net系统中使用WinForms报表查看器的系统。处理报告的服务器使用格式MM/dd/yyyy
,系统使用dd/MM/yyyy
。我不能更改此系统或系统,因为两者都需要具有这些设置。
问题在于,虽然日历将日期显示为dd/MM/yyyy
并将其输入到该格式的参数字段中,但日期仍被解析为MM/dd/yyyy
。
如果在解析日期后将日期输入为MM/dd/yyyy
,则会将其切换回dd/MM/yyyy
中的显示,然后如果用户再次尝试运行报告,则无法解析或向后解析。
报告是使用SQL Server 2005存储过程的标准SSRS 2005报告。
我已将报告的Language
属性设置为=User!Language
,虽然这导致日历以正确的格式设置日期,但解析仍无法正常工作。
我正在使用Microsoft.ReportViewer.WinForms和.Net 3.5的8.0.0.0版。如果需要,我可以升级其中一个或两个。系统在Windows 7 64位上运行。
我的计算机的区域设置设置为dd/MM/yyyy
根据要求,我正在添加.net报告代码。
此问题会影响具有DateTime参数的所有报告。
日期参数输入到列表中,如图所示。 CustomCalendarControl是一个带有一些样式的MaskedTextBox。格式为dd/MM/yyyy
paramList.Add(New ReportParameter("start", datCustomCalendarControl.Text, False))
以下代码运行报告。该方法接受bv_strReportName和可选的List(ReportParameter)。如果没有传递参数,控件将提示用户输入参数。该问题会影响通过bv_ParameterList传入的参数以及通过控件输入的参数。 reportViewer是一个标准的WinForms ReportViewer控件。
reportViewer.ServerReport.ReportServerUrl = Globals.ReportServerLocation
reportViewer.ServerReport.ReportPath = Globals.ReportPathLocation & bv_strReportName
reportViewer.ServerReport.ReportServerCredentials.NetworkCredentials = New Net.NetworkCredential("USER", "PASSWORD")
if (bv_ParameterList IsNot Nothing) Then
reportViewer.ServerReport.SetParameters(bv_ParameterList)
reportViewer.RefreshReport()
End If
您可以提供任何帮助。