2010-03-31 65 views
0

我以编程方式将一些参数传递给CR报告,并且工作正常,但现在我为报告添加了新的日期参数,出于某种原因,它提示我在屏幕上输入该参数(用户不允许设置该参数是必须设置它的系统),除了添加新的日期参数外,其他参数都没有改变,其他参数表现正常,只是提示日期参数,甚至认为我已经为参数设置了一个值。如何将日期参数从ASP.NET应用程序传递到Crystal Reports 2008?

这是我已经得到了代码:

private void ConfigureCrystalReports() 
{ 
    crystalReportViewer.ReportSource = GetReportPath(); 
    crystalReportViewer.DataBind(); 

    ConnectionInfo connectionInfo = GetConnectionInfo(); 
    TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo; 
    foreach (TableLogOnInfo tableLogOnInfo in tableLogOnInfos) { 
     tableLogOnInfo.ConnectionInfo = connectionInfo; 
    } 

    ArrayList totOriValues = new ArrayList(); 
    totOriValues.Add(date.ToString("MM/dd/yyyy HH:mm:ss")); 
    ParameterFields parameterFields = crystalReportViewer.ParameterFieldInfo; 
    SetCurrentValuesForParameterField(parameterFields, totOriValues, "DateParameter"); 
} 

private static void SetCurrentValuesForParameterField(ParameterFields parameterFields, ArrayList arrayList, string parameterName) 
{ 
    ParameterValues currentParameterValues = new ParameterValues(); 
    foreach (object submittedValue in arrayList) { 
     ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue(); 
     parameterDiscreteValue.Value = submittedValue.ToString(); 
     currentParameterValues.Add(parameterDiscreteValue); 
    } 

    ParameterField parameterField = parameterFields[parameterName]; 
    parameterField.CurrentValues = currentParameterValues; 
} 

只是为了事物的缘故:我已检查该参数确实是一个日期,它很好地形成。 CR提示我以格式(mm/dd/yyyy hh:mm:ss)输入格式,所以我按照确切的格式传递日期(事实上,我甚至尝试过编写格式良好的日期,并且仍然提示我输入日期)。

我做错了什么?

回答

1

我建议将参数设置为实际的日期时间而不是字符串。 ParameterDiscreteValue的Value属性需要一个对象。在我的报告中,我将它设置为DateTime值,并且工作正常。我根本没有使用用户提示,但是我的猜测是参数没有得到它可以使用的值,于是引发了提示。

+0

谢谢!就是这样! – Unlimited071 2010-03-31 20:17:19

0

是的,Crystal不喜欢日期字符串,所以如果它是日期字段,我会以mm/dd/yyyy格式传递日期,但两端都带有#号。所以今天我会通过#04/01/2010#。

相关问题