Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么它会产生一个错误,说;无效的参数值";,当我将日期类型的参数传递给crystal reports时?_C#_.net_Date_Types_Crystal Reports - Fatal编程技术网

C# 为什么它会产生一个错误,说;无效的参数值";,当我将日期类型的参数传递给crystal reports时?

C# 为什么它会产生一个错误,说;无效的参数值";,当我将日期类型的参数传递给crystal reports时?,c#,.net,date,types,crystal-reports,C#,.net,Date,Types,Crystal Reports,此代码在我的计算机上运行良好,但在客户端计算机上会导致错误 cr.SetParameterValue("fromDate", fromDatePicker.Value.Date); cr.SetParameterValue("toDate", toDatePicker.Value.Date); cr.SetParameterValue("todayRate", Common.GetTodayRate()); 错误是 Invalid Parameter value: exceeds the Mi

此代码在我的计算机上运行良好,但在客户端计算机上会导致错误

cr.SetParameterValue("fromDate", fromDatePicker.Value.Date);
cr.SetParameterValue("toDate", toDatePicker.Value.Date);
cr.SetParameterValue("todayRate", Common.GetTodayRate());
错误是

Invalid Parameter value: exceeds the Min or Max or conflicts with existing value or edit mask
这里,fromDate和toDate是“日期”类型的参数。而todayRate是“Number”类型的参数


有没有办法解决这个问题?

这个问题与从应用程序代码到CR的参数输入的区域性敏感处理有关。在这种特定情况下,CR的多语言支持设计显然很糟糕

解决方案,尽管丑陋,但如下所示

对于报告中的每个
日期
时间
日期时间
参数字段,请执行以下操作:

CDate({?ParamFieldName}) // Date
CTime({?ParamFieldName}) // Time
CDateTime({?ParamFieldName}) // DateTime
  • 在CR designer中,将参数字段的类型更改为
    String
  • 创建新的公式字段并将其值设置为以下值之一:

    CDate({?ParamFieldName}) // Date
    CTime({?ParamFieldName}) // Time
    CDateTime({?ParamFieldName}) // DateTime
    
    根据原始参数字段类型,其中
    ParamFieldName
    是参数字段的名称

  • 在应用程序代码中,通过以下方式之一传递参数值:

    // Date
    report.SetParameterValue(
        "ParamFieldName",
        DateTimeObject.ToShortDateString().TrimEnd('.'));
    
    // Time
    report.SetParameterValue(
        "ParamFieldName",
        DateTimeObject.ToShortTimeString());
    
    // DateTime
    report.SetParameterValue(
        "ParamFieldName",
        string.Format("{0} {1}",
            DateTimeObject.ToShortDateString().TrimEnd('.'),
            DateTimeObject.ToShortTimeString()));
    
  • 在CR designer中,插入公式字段而不是参数字段,并在CR designer中设置其显示格式
  • 这已经在几种文化中进行了测试


    正在修剪日期字符串中的结束点,因为CR由于未知原因无法处理该点,即使在日期末尾有点的区域性(即塞尔维亚语-
    14.3.2015.

    鉴于参数具有相同的值,即时怀疑与它们的区域性之间的差异有关(日期和数字设置)和您的。CR不是我使用的东西,是在CR端键入的参数。如果它们被转换为字符串,这将几乎保证出现这样的错误,堆栈跟踪(这是一个例外?)可能会告诉您更多