首页 文章

如何将日期范围参数从C#传递到ValueRange晶体报告

提问于
浏览
1

我很难将C#中的日期范围传递给Crystal Report .

  • 这里我有两个来自我的C#表格 StartDateEndDate 的 Value .

  • 我在Crystal Report中有一个参数字段名称 DateAllow Range Value .

我尝试使 string [] 将两个值传递给crystal报表,并提示错误ValueRangeKind .

PrintDocument pd = new PrintDocument();
                    rpt.PrintOptions.PrinterName = pd.PrinterSettings.PrinterName;

                    rpt.SetParameterValue("Company", nm);
                    rpt.SetParameterValue("Location", cbxloc.ToString().Trim().ToUpper());
                    rpt.SetParameterValue("Product Project", cbxppj.ToString().Trim().ToUpper());
                    rpt.SetParameterValue("Commodity", cbxcommodity.ToString().Trim().ToUpper());

                    rpt.SetParameterValue("Date", new string[]{StartDate,EndDate});

这是错误消息:

ParameterFieldException未处理:参数字段当前值不能包含离散值,因为ValueRangeKind属性设置为range .

希望你能理解我的情况 .

2 回答

  • 0

    C#

    ParameterRangeValue myParameterRangeValue = new ParameterRangeValue();
    
    myParameterRangeValue.StartValue = StartDate;
    myParameterRangeValue.EndValue = EndDate;
    
    crReport.SetParameterValue("Date", myParameterRangeValue);
    

    VB

    Dim myParameterRangeValue As New ParameterRangeValue
    
        myParameterRangeValue.StartValue = StartDate
        myParameterRangeValue.EndValue = EndDate
    
        crReport.SetParameterValue("Date", myParameterRangeValue)
    

    您需要创建一个ParameterRangeValue对象,填充它,并将其传递给setter . 您需要将日期作为字符串传递(我没有尝试使用DateTime对象,但我认为它不会起作用),因此请确保首先将DateTime对象转换为String .

  • 1

    根据我的经验,我只是不这样做 .

    我发现传递两个日期而不是一个范围要好得多,然后在水晶中使用 >=<= .

相关问题