zoukankan      html  css  js  c++  java
  • 水晶报表传递参数及使用公式参数

    向水晶报表传递参数及使用公式参数
    下面的说明是关于向水晶报表里传递字符串类型参数和数字参数,以及用公式参数进行运算和转换。

    阅读本站更多 水晶报表 Crystal Report 相关的文章:
    水晶报表公式必读(水晶报表公式使用)
    水晶报表传递参数及使用公式参数
    经典水晶报表设计三则
    水晶报表Web打印的四种方法
    水晶报表中实现任意指定字段显示
    Asp.Net与Crystal Report(水晶报表)
    向水晶报表中传递参数,现在水晶报表中设置参数,然后把参数赋给选择公式

    CrystalDecisions.Shared.ParameterValues   mypaVal = new CrystalDecisions.Shared.ParameterValues();
    CrystalDecisions.Shared.ParameterDiscreteValue mypaDVal = new CrystalDecisions.Shared.ParameterDiscreteValue();
    mypaDVal.Value = 参数值;
    mypaVal.Add(mypaDVal);
    myrep.DataDefinition.ParameterFields[\"水晶报表中的参数\"].ApplyCurrentValues(mypaVal);


    第一步:生成数据集DataSet1.xsd,连好数据库,这在“水晶报表打印二”里面有详细说明,这里不再说明。
    第二步:添加一个空白水晶报表CrystalReport1.rpt,在字段资源管理器中,右击“参数字段”选择“添加”,此处我们命名为p1(值类型为字符串),p2(值类型为数字,并且设为区域值),如下图:其它不做修改。
    点击在新窗口中浏览此图片(图3.1)
    右击“公式字段”,选“新建”,新建两个为:f1和f2,确定后会出现“公式编辑器”如下图,先不做改变,保存后关闭。
    点击在新窗口中浏览此图片(图3.2)
    第三步:将p1,p2拖入报表中,并保存报表。
    第四步:编写代码。在WebForm1.aspx中以CrystalReportViewer1为对象编写代码如下:
    // 声明将参数传递给
             //  查看器控件所需的变量。
             ParameterFields paramFields = new ParameterFields ();
                  ParameterField paramField = new ParameterField ();
                  ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
                  ParameterRangeValue rangeVal = new ParameterRangeValue ();

    // 第一个参数是具有多个值的离散参数。
                  // 设置参数字段的名称,它必须
                  // 和报表中的参数相符。
                  paramField.ParameterFieldName = \"p1\";

    // 设置第一个离散值并将其传递给该参数。
                  discreteVal.Value = \"dongliang\";
                  paramField.CurrentValues.Add (discreteVal);

    // 设置第二个离散值并将其传递给该参数。
                  // discreteVal 变量被设置为新值,这样,以前的设置
                  // 就不会被覆盖。
                  discreteVal = new ParameterDiscreteValue ();
                  discreteVal.Value = \"DONGLIANG\";
                  paramField.CurrentValues.Add (discreteVal);

    // 将该参数添加到参数字段集合。
                  paramFields.Add (paramField);

    // 第二个参数为区域值。paramField 变量
                  // 被设置为新值,这样,以前的设置就不会被覆盖。
                  paramField = new ParameterField ();

    // 设置参数字段的名称,它必须
                  // 和报表中的参数相符。
                  paramField.ParameterFieldName = \"p2\";

    // 设置范围的开始值和结束值并将该范围传递给
                  // 该参数。
                  rangeVal.StartValue = 42;
                  rangeVal.EndValue = 72;
                  paramField.CurrentValues.Add (rangeVal);

    // 将第二个参数添加到参数字段集合。
                  paramFields.Add (paramField);

    // 将参数字段集合放入查看器控件。
                  CrystalReportViewer1.ParameterFieldInfo = paramFields;
                  rpt = new CrystalReport1();
    CrystalReportViewer1.ReportSource = rpt;

    还是要引用命名空间:
    using CrystalDecisions.Shared;
    using CrystalDecisions.CrystalReports.Engine;

    rpt 为ReportDocument rpt ;
    以上即可完对于参数字段的说明,下面是用公式字段来处理加入的参数字段:
    第五步:
    将公式字段f1拖入水晶报表,并右键选择“编辑公式”如上图(图3.2)选择字符串处理函数如下:Left ({?p1},5 )
    点击在新窗口中浏览此图片(图3.3)
    其它的数字处理的类似,如下图:

    点击在新窗口中浏览此图片(图3.4)
    最后:
    运行,你会看到:

    点击在新窗口中浏览此图片
    (图3.5)
    成功!


    如何向水晶报表数据源中的存储过程传参数?
    水晶报表会自动为每个“存储过程中的参数”建立一个“参数字段”,所以这就成了运行时给参数赋值的问题了……

    参数字段运行时自定义

    [Visual Basic]
    ' 声明将参数传递给
    '查看器控件所需的变量。
    Dim paramFields As New ParameterFields()
    Dim paramField As New ParameterField()
    Dim discreteVal As New ParameterDiscreteValue()
    Dim rangeVal As New ParameterRangeValue()

    ' 第一个参数是具有多个值的离散参数。

    ' 设置参数字段的名称,它必须
    '和报表中的参数相符。
    paramField.ParameterFieldName = \"客户姓名\"

    ' 设置第一个离散值并将其传递给该参数
    discreteVal.Value = \"AIC Childrens\"
    paramField.CurrentValues.Add(discreteVal)

    ' 设置第二个离散值并将其传递给该参数。
    ' discreteVal 变量被设置为新值,这样,以前的设置
    '就不会被覆盖。
    discreteVal = New ParameterDiscreteValue()
    discreteVal.Value = \"Aruba Sport\"
    paramField.CurrentValues.Add(discreteVal)

    ' 将该参数添加到参数字段集合。
    paramFields.Add(paramField)

    ' 第二个参数为区域值。paramField 变量
    '被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = New ParameterField()

    ' 设置参数字段的名称,它必须
    '和报表中的参数相符。
    paramField.ParameterFieldName = \"客户 ID\"

    ' 设置区域的开始值和结束值并将区域传递给该参数。
    rangeVal.StartValue = 42
    rangeVal.EndValue = 72
    paramField.CurrentValues.Add(rangeVal)

    ' 将第二个参数添加到参数字段集合。
    paramFields.Add(paramField)

    ' 将参数字段集合放入查看器控件。
    crystalReportViewer1.ParameterFieldInfo = paramFields

    crystalReportViewer1.ReportSource = \"c:reportsmy report.rpt\"

    [C#]
    // 声明将参数传递给
    //查看器控件所需的变量。
    ParameterFields paramFields = new ParameterFields ();
    ParameterField paramField = new ParameterField ();
    ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
    ParameterRangeValue rangeVal = new ParameterRangeValue ();

    // 第一个参数是具有多个值的离散参数。

    // 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField.ParameterFieldName = \"客户姓名\";

    // 设置第一个离散值并将其传递给该参数。
    discreteVal.Value = \"AIC Childrens\";
    paramField.CurrentValues.Add (discreteVal);

    // 设置第二个离散值并将其传递给该参数。
    // discreteVal 变量被设置为新值,这样,以前的设置
    //就不会被覆盖。
    discreteVal = new ParameterDiscreteValue ();
    discreteVal.Value = \"Aruba Sport\";
    paramField.CurrentValues.Add (discreteVal);

    // 将该参数添加到参数字段集合。
    paramFields.Add (paramField);

    // 第二个参数为区域值。paramField 变量
    //被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = new ParameterField ();

    // 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField.ParameterFieldName = \"客户 ID\";

    // 设置范围的开始值和结束值并将该范围传递给
    //该参数。
    rangeVal.StartValue = 42;
    rangeVal.EndValue = 72;
    paramField.CurrentValues.Add (rangeVal);

    // 将第二个参数添加到参数字段集合。
    paramFields.Add (paramField);

    // 将参数字段集合放入查看器控件。
    crystalReportViewer1.ParameterFieldInfo = paramFields;
    [C++]
    // 声明将参数传递给
    //查看器控件所需的变量。
    ParameterFields* paramFields = new ParameterFields ();
    ParameterField* paramField = new ParameterField ();
    ParameterDiscreteValue* discreteVal = new ParameterDiscreteValue ();
    ParameterRangeValue* rangeVal = new ParameterRangeValue ();

    // 第一个参数是具有多个值的离散参数。
    // 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField->ParameterFieldName = \"客户姓名\";

    // 设置第一个离散值并将其传递给该参数。
    String* val = \"AIC Childrens\";
    discreteVal->Value = val;
    paramField->CurrentValues->Add (discreteVal);

    // 设置第二个离散值并将其传递给该参数。
    // discreteVal 变量被设置为新值,这样,以前的设置
    //就不会被覆盖。
    discreteVal = new ParameterDiscreteValue ();
    val = \"Aruba Sport\";
    discreteVal->Value = val;
    paramField->CurrentValues->Add (discreteVal);

    // 将该参数添加到参数字段集合。
    paramFields->Add (paramField);

    // 第二个参数为区域值。paramField 变量
    //被设置为新值,这样,以前的设置就不会被覆盖。
    paramField = new ParameterField ();

    // 设置参数字段的名称,它必须
    //和报表中的参数相符。
    paramField->ParameterFieldName = \"客户 ID\";

    // 设置范围的开始值和结束值并将该范围传递给
    //该参数。
    rangeVal->StartValue = __box(42);
    rangeVal->EndValue = __box(72);
    paramField->CurrentValues->Add (rangeVal);

    // 将第二个参数添加到参数字段集合。
    paramFields->Add (paramField);

    // 将参数字段集合放入查看器控件。
    crystalReportViewer1->ParameterFieldInfo = paramFields;

    crystalReportViewer1->ExportReport();




    阅读本站更多 水晶报表 Crystal Report 相关的文章:
    水晶报表公式必读(水晶报表公式使用)
    水晶报表传递参数及使用公式参数
    经典水晶报表设计三则
    水晶报表Web打印的四种方法
    水晶报表中实现任意指定字段显示
    Asp.Net与Crystal Report(水晶报表)

    水晶报表传递参数  使用水晶报表公式参数  向水晶报表数据源中的存储过程传参数
  • 相关阅读:
    Oracle 11g系列:函数与存储过程
    Oracle 11g系列:视图
    Oracle 11g系列:约束
    Oracle 11g系列:数据表对象
    Oracle 11g系列:数据库
    Oracle 11g系列:SQL Plus与PL/SQL
    Ext.util.TaskRunner定时执行任务
    MS SQL Server存储过程
    UML基础:用例图Use Case Diagram(1)
    UML基础系列:类图
  • 原文地址:https://www.cnblogs.com/chenbg2001/p/1638381.html
Copyright © 2011-2022 走看看