如果参数字段是用在子报表中,需要在设置参数值时显式指明,下面这个方法就是这样的。/// <summary>
/// 设置参数值
/// </summary>
/// <param name="discreteValue">参数值</param>
/// <param name="ParameterName">参数名称</param>
/// <param name="IsSubreport">该参数是否属于子表</param>
/// <param name="SubReportName">子表名称,无子表输入""</param>
private void SetParameterValue(CrystalDecisions.Shared.ParameterDiscreteValue discreteValue,string ParameterName,bool IsSubreport,string SubReportName)
{
CrystalDecisions.Shared.ParameterField  parameterField = new CrystalDecisions.Shared.ParameterField();
parameterField.ParameterFieldName = ParameterName;
if(IsSubreport)
parameterField.ReportName = SubReportName;
parameterField.CurrentValues.Add(discreteValue);
this.crvMain.ParameterFieldInfo.Add(parameterField);
}

解决方案 »

  1.   

    上面的代码应加在report.cs还是form.cs中哦,我还是不太清楚
      

  2.   

    jc3,为主报表,s004为子报表的公式 ,jcys_nlz.rpt 为子报表,mjhglsb[0],为需要传的数据jc3.OpenSubreport ("jcys_nlz.rpt").DataDefinition .FormulaFields ["s004"].Text =Convert.ToString (mjhglsb[0]);
      

  3.   

    TO youngcy(youngcy) 是form.cs中
      

  4.   

    还是没有太懂啊,官方的自报表实例里面的我也高不清楚
    SubrptDateRangeParameter crrptdoc; 
    ParameterFieldDefinitions crParameterFieldDefinitions; 
    ParameterFieldDefinition crParameterFieldDefinition;
    ParameterValues crParameterValues;
    ParameterRangeValue crParameterRangeValue;
    crrptdoc = new SubrptDateRangeParameter();
    crParameterFieldDefinitions = crrptdoc.DataDefinition.ParameterFields;
    crParameterFieldDefinition = crParameterFieldDefinitions["Order Date Range"];
    crParameterValues = crParameterFieldDefinition.CurrentValues;
    crParameterRangeValue = new ParameterRangeValue();
    crParameterRangeValue.EndValue = "1/1/1997";
    crParameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
    crParameterRangeValue.StartValue = "12/20/1997";
    crParameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
    crParameterValues.Add(crParameterRangeValue);
    crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
    crystalReportViewer1.ReportSource = crrptdoc;
      

  5.   

    为什么我水晶报表中加了子报表后就要我登陆,参数字段应该都是正确的啊.我得数据源是dataset,没有子报表时可以正常生成报表,但加了子报表后就不行了~~~~~~~~~
      

  6.   

    到底是不是因为参数字段呢,自报表中去掉参数字段也不行吗。我的代码是在form.cs中。