.net 参数日期格式

.net 参数日期格式,.net,reporting-services,reportingservices-2005,.net,Reporting Services,Reportingservices 2005,我对SSRS报告参数日期格式有一些问题。我有一个在VB.net系统中使用WinForms报表查看器的系统。处理报告的服务器使用格式MM/dd/yyyy,系统使用dd/MM/yyyy。我无法更改此设置或系统,因为两者都需要具有这些设置 问题在于,尽管日历将日期显示为dd/MM/yyyy,并以该格式将其输入参数字段,但日期仍被解析为MM/dd/yyyy 如果在解析日期后将日期输入为MM/dd/yyyy,则这些日期将切换回显示在dd/MM/yyyyy中,如果用户再次尝试运行报告,则会导致解析失败或向后

我对SSRS报告参数日期格式有一些问题。我有一个在VB.net系统中使用WinForms报表查看器的系统。处理报告的服务器使用格式
MM/dd/yyyy
,系统使用
dd/MM/yyyy
。我无法更改此设置或系统,因为两者都需要具有这些设置

问题在于,尽管日历将日期显示为
dd/MM/yyyy
,并以该格式将其输入参数字段,但日期仍被解析为
MM/dd/yyyy

如果在解析日期后将日期输入为
MM/dd/yyyy
,则这些日期将切换回显示在
dd/MM/yyyyy
中,如果用户再次尝试运行报告,则会导致解析失败或向后解析。 这些报告是使用SQL Server 2005存储过程的标准SSRS 2005报告

我已经将报告的
语言
属性设置为
=User!语言
,虽然这导致日历以正确的格式设置日期,但解析仍然无法正常工作

我使用的是Microsoft.ReportViewer.WinForms和.Net 3.5的8.0.0.0版。如果需要,我可以升级一个或两个。系统在64位Windows 7上运行

我的电脑的区域设置设置为
dd/MM/yyyy

paramList.Add(New ReportParameter("start", datCustomCalendarControl.Text, False))
根据要求,我正在添加.net报表代码

此问题影响所有具有DateTime参数的报表

日期参数输入到列表中,如图所示。CustomCalendarControl是一个带有一些样式的MaskedTextBox。格式为
dd/MM/yyyy

paramList.Add(New ReportParameter("start", datCustomCalendarControl.Text, False))
下面的代码运行报告。该方法接受bv_strReportName和一个可选列表(ReportParameter)。如果未传递任何参数,控件将提示用户输入参数。该问题影响通过bv_参数列表传入的参数和通过控件输入的参数。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

如果您能提供任何帮助,我们将不胜感激。

寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小的、完整的和可验证的示例。根据您的建议,我已经更新了我的问题,以包括一些.net代码。评论或pm如果你有任何其他建议类似的问题已经被问了很多次。日期没有格式。格式仅在转换为字符串时适用。如果报表参数、查询、存储过程参数和日期字段实际上是日期类型的,则不会有任何问题。显然,您正在将日期转换为字符串。真正的解决方案是将它们转换为日期类型。简而言之,不要将
datCustomCalendarControl.Text
作为参数传递。将
start
报告参数更改为日期类型,使用返回日期的控件或使用DateTime.Parse/ParseExact将文本转换为DateTime。您还可以更改掩码,以允许格式明确的日期“yyyy-MM-dd”ReportParameter只接受字符串,因此如何将其更改为日期?我可以向控件添加属性以将日期作为
yyyy-MM-dd
格式的字符串返回,也可以添加预处理步骤以在构造函数中转换为该格式,但这只能在运行报告之前已知参数时解决我的问题。ReportViewer控件中的参数也有同样的问题,在将预处理参数发送到服务器之前,我无法侦听任何事件。最简单的方法是更改掩码,但用户需要他们拥有的格式