为什么当我将 DATE 类型的参数传递给水晶报告时,它会生成一个错误说“参数值无效”

本文关键字:一个 错误 参数值无效 无效 参数 类型 DATE 参数传递 报告 水晶 为什么 | 更新日期: 2023-09-27 18:31:25

此代码在我的计算机上完美运行,但在客户端计算机上导致错误。

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是"Date"类型的参数。 而今天率是"数字"类型的参数。

有什么方法可以解决这个问题吗?

为什么当我将 DATE 类型的参数传递给水晶报告时,它会生成一个错误说“参数值无效”

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

解决方案虽然丑陋,但如下。

对于报表中的每个DateTimeDateTime参数字段,请执行以下操作:

  1. 在 CR 设计器中,将参数字段的类型更改为 String
  2. 创建一个新的公式字段并将其值设置为以下值之一:

    CDate({?ParamFieldName}) // Date
    CTime({?ParamFieldName}) // Time
    CDateTime({?ParamFieldName}) // DateTime
    

    根据原始参数字段类型,其中ParamFieldName是参数字段的名称。

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

    // 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()));
    
  4. 在 CR 设计器中
  5. ,插入公式字段而不是参数字段,并在 CR 设计器中设置其显示格式。

这已经在几种文化中进行了测试。

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

相关文章: