如何向 CrystalReportViewer 和 ReportDocument 传递参数

转载 2008年10月02日 09:45:00

一、CrystalReportViewer
通过 CrystalReportViewer.ParameterFieldInfo 属性……

1、crystalreportviewer 成员
公共实例属性
ParameterFieldInfo(从 CrystalReportViewerbase 继承) ParameterFields。获取或设置参数字段集合。

二、reportdocument
通过 ReportDocument.DataDefinition.ParameterFields 属性……

1、reportdocument 成员
公共实例属性
DataDefinition DataDefinition。获取 DataDefinition 对象。

2、datadefinition 成员
公共实例属性
ParameterFields ParameterFieldDefinitions。获取 ParameterFieldDefinitions 集合。

三、参数字段运行时自定义(crystalreportviewer)

参考:
设置参数 | Windows 窗体查看器的绑定选项 | Web 窗体查看器的绑定选项

可支持用户在 Crystal 报表中通过参数进行输入。这种参数有多种用途。例如:
使参数基于数据库字段并允许用户指定该字段的值,以便对报表中的数据进行筛选。
使用参数字段将条件格式应用于报表。
使用参数字段来定义排序顺序。
下列示例说明如何在运行时通过代码设置参数字段值。此例解释了如何设置两个不同的参数:第一个是多值离散参数,第二个是区域值参数。

在运行时修改参数字段

  1. [visual Basic] 
  2. ' 声明将参数传递给
  3. '查看器控件所需的变量。
  4. Dim paramFields As New ParameterFields()
  5. Dim paramField As New ParameterField()
  6. Dim discreteVal As New ParameterDiscreteValue()
  7. Dim rangeVal As New ParameterRangeValue()
  8. ' 第一个参数是具有多个值的离散参数。
  9. ' 设置参数字段的名称,它必须
  10. '和报表中的参数相符。
  11. paramField.ParameterFieldName = "客户姓名"
  12. ' 设置第一个离散值并将其传递给该参数
  13. discreteVal.Value = "AIC Childrens"
  14. paramField.CurrentValues.Add(discreteVal)
  15. ' 设置第二个离散值并将其传递给该参数。
  16. ' discreteVal 变量被设置为新值,这样,以前的设置
  17. '就不会被覆盖。
  18. discreteVal = New ParameterDiscreteValue()
  19. discreteVal.Value = "Aruba Sport"
  20. paramField.CurrentValues.Add(discreteVal)
  21. ' 将该参数添加到参数字段集合。
  22. paramFields.Add(paramField)
  23. ' 第二个参数为区域值。paramField 变量
  24. '被设置为新值,这样,以前的设置就不会被覆盖。
  25. paramField = New ParameterField()
  26. ' 设置参数字段的名称,它必须
  27. '和报表中的参数相符。
  28. paramField.ParameterFieldName = "客户 ID"
  29. ' 设置区域的开始值和结束值并将区域传递给该参数。
  30. rangeVal.StartValue = 42
  31. rangeVal.EndValue = 72
  32. paramField.CurrentValues.Add(rangeVal)
  33. ' 将第二个参数添加到参数字段集合。
  34. paramFields.Add(paramField)
  35. ' 将参数字段集合放入查看器控件。
  36. crystalReportViewer1.ParameterFieldInfo = paramFields
  37. crystalreportviewer1.reportsource = "c:/reports/my report.rpt"
  38. [c#] 
  39. // 声明将参数传递给
  40. //查看器控件所需的变量。
  41. ParameterFields paramFields = new ParameterFields ();
  42. ParameterField paramField = new ParameterField ();
  43. ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
  44. ParameterRangeValue rangeVal = new ParameterRangeValue ();
  45. // 第一个参数是具有多个值的离散参数。
  46. // 设置参数字段的名称,它必须
  47. //和报表中的参数相符。
  48. paramField.ParameterFieldName = "客户姓名";
  49. // 设置第一个离散值并将其传递给该参数。
  50. discreteVal.Value = "AIC Childrens";
  51. paramField.CurrentValues.Add (discreteVal);
  52. // 设置第二个离散值并将其传递给该参数。
  53. // discreteVal 变量被设置为新值,这样,以前的设置
  54. //就不会被覆盖。
  55. discreteVal = new ParameterDiscreteValue ();
  56. discreteVal.Value = "Aruba Sport";
  57. paramField.CurrentValues.Add (discreteVal);
  58. // 将该参数添加到参数字段集合。
  59. paramFields.Add (paramField);
  60. // 第二个参数为区域值。paramField 变量
  61. //被设置为新值,这样,以前的设置就不会被覆盖。
  62. paramField = new ParameterField ();
  63. // 设置参数字段的名称,它必须
  64. //和报表中的参数相符。
  65. paramField.ParameterFieldName = "客户 ID";
  66. // 设置范围的开始值和结束值并将该范围传递给
  67. //该参数。
  68. rangeVal.StartValue = 42;
  69. rangeVal.EndValue = 72;
  70. paramField.CurrentValues.Add (rangeVal);
  71. // 将第二个参数添加到参数字段集合。
  72. paramFields.Add (paramField);
  73. // 将参数字段集合放入查看器控件。
  74. crystalReportViewer1.ParameterFieldInfo = paramFields;
  75. [c++] 
  76. // 声明将参数传递给
  77. //查看器控件所需的变量。
  78. ParameterFields* paramFields = new ParameterFields ();
  79. ParameterField* paramField = new ParameterField ();
  80. ParameterDiscreteValue* discreteVal = new ParameterDiscreteValue ();
  81. ParameterRangeValue* rangeVal = new ParameterRangeValue ();
  82. // 第一个参数是具有多个值的离散参数。
  83. // 设置参数字段的名称,它必须
  84. //和报表中的参数相符。
  85. paramField->ParameterFieldName = "客户姓名";
  86. // 设置第一个离散值并将其传递给该参数。
  87. String* val = "AIC Childrens";
  88. discreteVal->Value = val;
  89. paramField->CurrentValues->Add (discreteVal);
  90. // 设置第二个离散值并将其传递给该参数。
  91. // discreteVal 变量被设置为新值,这样,以前的设置
  92. //就不会被覆盖。
  93. discreteVal = new ParameterDiscreteValue ();
  94. val = "Aruba Sport";
  95. discreteVal->Value = val;
  96. paramField->CurrentValues->Add (discreteVal);
  97. // 将该参数添加到参数字段集合。
  98. paramFields->Add (paramField);
  99. // 第二个参数为区域值。paramField 变量
  100. //被设置为新值,这样,以前的设置就不会被覆盖。
  101. paramField = new ParameterField ();
  102. // 设置参数字段的名称,它必须
  103. //和报表中的参数相符。
  104. paramField->ParameterFieldName = "客户 ID";
  105. // 设置范围的开始值和结束值并将该范围传递给
  106. //该参数。
  107. rangeVal->StartValue = __box(42);
  108. rangeVal->EndValue = __box(72);
  109. paramField->CurrentValues->Add (rangeVal);
  110. // 将第二个参数添加到参数字段集合。
  111. paramFields->Add (paramField);
  112. // 将参数字段集合放入查看器控件。
  113. crystalReportViewer1->ParameterFieldInfo = paramFields;
  114. crystalreportviewer1->exportreport();

如何向 CrystalReportViewer 和 ReportDocument 传递参数……

一、CrystalReportViewer通过 CrystalReportViewer.ParameterFieldInfo 属性……1、CrystalReportViewer 成员公共实例属性Par...
  • haibodotnet
  • haibodotnet
  • 2003年11月16日 10:42
  • 16271

如何向 CrystalReportViewer 和 ReportDocument 传递参数

一、CrystalReportViewer通过 CrystalReportViewer.ParameterFieldInfo 属性……1、CrystalReportViewer 成员公共实例属性Par...
  • jianzi1943
  • jianzi1943
  • 2006年12月16日 00:12
  • 538

如何向 CrystalReportViewer 和 ReportDocument 传递参数……

一、CrystalReportViewer通过 CrystalReportViewer.ParameterFieldInfo 属性……1、CrystalReportViewer 成员公共实例属性Par...
  • BennyMavis
  • BennyMavis
  • 2004年11月08日 15:09
  • 1508

hadoop编程中,给map或者reduce传递参数

在job中没有看到能给mapper或者reducer传参的方法,但是可以通过设置配置来间接传递参数,因为job和mapper和reducer的Configuration是公用的,所以只需要在job中设...
  • wx__xw
  • wx__xw
  • 2013年02月05日 22:35
  • 2181

如何向用户控件传递参数

方法一:如果在Page.IsPostBack的页面中可以通过Request来进行.但是在!Page.IsPostBack页面,这样就无法传递参数,具体方法如下:引用用户控件页面html代码1uc1:u...
  • ChaoYang0502
  • ChaoYang0502
  • 2008年06月05日 14:05
  • 848

如何向线程传递参数

在线程的使用中ThreadStart()不能调用带参数的方法,如果想传入参数必须使用类来传递    public class test    {        public test(Label la...
  • jbhou
  • jbhou
  • 2007年07月23日 16:27
  • 481

如何向基类传递参数

方式: 派生类构造函数(参数列表):基类构造函数名(参数列表),基类构造函数名(参数列表) #include using namespace std; class Base { publi...
  • u012967763
  • u012967763
  • 2015年01月05日 09:52
  • 156

如何向线程传递参数

很多人知道如何去开启一个线程,但是不知道如何正确的向线程中传递参数。   比较常见的错误是用全局变量来向线程传递参数,其实这样做的缺点一是不安全,二是比较麻烦,三是如果要开启多个线程,就更麻烦。  ...
  • mss359681091
  • mss359681091
  • 2016年04月06日 14:01
  • 1000

如何向线程传递参数

Net提供了许多多线程编程工具,可能是因为太多了,所以掌握起来总是有一些头疼,我在这里讲讲我总结的一些多线程编程的经验,希望对大家有帮助 不需要传递参数,也不需要返回参数我们知道启动一个线程最直观的办...
  • bmoon
  • bmoon
  • 2008年09月11日 10:19
  • 6435

CrystalReportViewer的属性

自定义水晶报表的显示    自定义水晶报表的显示,比如隐藏工具栏,让报表左对齐,去除水晶报表的公司LOGO等………  ——————————————————————————————————————   ...
  • aivii
  • aivii
  • 2007年07月03日 09:14
  • 1586
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何向 CrystalReportViewer 和 ReportDocument 传递参数
举报原因:
原因补充:

(最多只允许输入30个字)