我是用存储过程来设定查询的数据的
用一个数据集文件dataset来做报表的数据源
在程序里只要把参数传给存储过程,填充dataset

解决方案 »

  1.   

    参数传递,请参考我的代码:
    ParameterFields ParamFields = new ParameterFields(); 
    ParameterField ParamField1 = new ParameterField(); 
    ParameterValues ParamValues1 = new ParameterValues(); 
    ParameterDiscreteValue ParamValue1 = new ParameterDiscreteValue(); 
    ParamValue1.Value="value1"; // 参数值 
    ParamValues1.Add(ParamValue1); 
    ParamField1.ParameterFieldName="p_id"; // 参数名 
    ParamField1.CurrentValues=ParamValues1; 
    ParamFields.Add(ParamField1); 
    CrystalReportViewer1.ParameterFieldInfo = ParamFields; 
    CrystalReportViewer1.DataBind();
    然后在报表的设计中,新建一个参数字段,名字和程式中的ParameterFieldName相同。就会关联起来。你再在报表中引用就OK了。
      

  2.   

    但我沒有用CrystalReportViewer1﹐而是用了ReportDocument﹐沒有ParameterFieldInfo 這個屬性﹐那怎么改?
      

  3.   

    ReportDocument.DataDefinition.ParameterFieldDefinitions
      

  4.   

    是啊。用存储过程来实现,先在外部设计好需要的数据,然后把放到一个dataset中,在传入报表中,就可以实现你的功能