水晶报表应用需求尽含于此——高级参数功能!!!(编辑:海波.NET)

haibodotnet 2003-11-06 10:18:03
水晶报表应用需求尽含于此——高级参数功能!!!(编辑:海波.NET)
------------------------------------------------
高级参数功能
在报表内使用参数的方法有很多种。本节介绍一些使用参数的高级方法:

1、创建具有多个值的参数
2、使用参数字段应用条件格式设置
3、使用参数字段创建报表标题
4、指定单个值或范围值
5、将参数包含在公式中
6、使用参数字段定义排序顺序
7、使用编辑掩码定义输入类型和格式
------------------------------------------------
1、创建具有多个值的参数
在“视图”菜单上单击“字段资源管理器”。
选择“参数字段”并单击“新建”。
输入“名称”和“提示文本”。
选择“值类型”。
选择“允许多个值”复选框以便能将多个值输入到参数中。允许单独使用或组合使用离散类型的值和范围类型的值。
注意: 有关单个值或范围值的详细信息,请参阅指定单个值或范围值。

单击“设置默认值”以确定允许输入的输入值类型。
出现“设置默认值”对话框。

从“浏览表”下拉列表中选择默认值的表。
从“浏览字段”下拉列表中选择默认值的字段。
与该表和字段相关联的值出现在“选择或输入要添加的值”区域中。

选择列出的值或创建您自己的值,然后使用箭头按钮将它们移动到“默认值”区域。
根据需要调整显示、顺序和长度限制。
单击“确定”。
------------------------------------------------
2、使用参数字段应用条件格式设置
参数字段可用于创建条件格式设置公式。每当刷新报表数据时,都可以自定义这些公式。条件格式设置公式可用于对满足特定条件的数据做颜色标记。例如:

销售额超过 10% 限额的销售代表。
在上一季度没有定货的客户。
上个月没有任何周转的存货。
如果标记这些项所基于的条件永不更改,则不需使用参数字段。可只使用公式(对于文本标记)或条件格式设置(对于边框标记)。但是,若要更改报表间的条件,则需要在公式和条件格式设置公式中使用参数字段。

使用参数字段应用条件格式设置
创建公式所需数据类型的参数字段。
创建公式并使用参数字段代替通常使用的固定值。
例如,若要让程序提示去年购买金额超过特定值的所有客户并将他们的姓名打印成红色,请选择“去年销售额”字段并单击“专家工具”工具栏上的“格式”。

出现“格式编辑器”。

单击“字体”选项卡上“颜色”属性旁边的“条件公式”按钮,并使用条件格式设置公式将字段进行格式设置,如下所示:
If {客户.去年销售额} > {?SalesTarget} Then
Red
Else
Black

现在,当刷新数据时,程序将提示您输入触发颜色标记的值(称为阈值),然后运行报表并标记所有去年销售额在阈值数字之上的客户。可在每次运行报表时更改该数字,程序将标记不同的“客户名称”组。

有关更多信息,请参阅条件格式化函数(Basic 语法)。
------------------------------------------------
3、使用参数字段创建报表标题
Crystal Reports使您得以使用参数字段创建在每次刷新报表时都可更改的报表标题。

使用参数字段创建报表标题
在“视图”菜单上单击“字段资源管理器”。
出现“字段资源管理器”。

选择“参数字段”并单击“新建”。
出现“创建参数字段”对话框。

在“名称”字段中键入参数字段的名称。
在“提示文本”字段中键入所需的任何提示文本。
从“值类型”下拉列表中选择“字符串”。
单击“设置默认值”。
出现“设置默认值”对话框。

若要指定默认标题,请在“选择或输入要添加的值”字段中键入想要的文本,然后单击 > 将标题添加到“默认值”区域。
注意: 根据需要继续添加标题。

单击“确定”。
出现“创建参数字段”对话框。

单击“确定”。
出现“字段资源管理器”,其中的新参数被选定。

将参数字段放在报表的“页眉”节中,以使标题在每页中都出现;或者如果想让标题只在报表的第一页出现,则将其放在“报表标题”节中。
现在,当刷新数据时,程序将提示您输入报表标题。如果需要,可在每次运行报表时更改标题。
------------------------------------------------
4、指定单个值或范围值
既可以创建要求用户输入单个(离散)值的参数,也可以创建要求用户输入范围值的参数。如果随后将这些参数包括在报表的记录选定区域中,则可帮助用户找到特定信息。例如,在记录选定参数使用离散值的情况下,用户可以输入单个的国家/地区名称,以便只查看该国家/地区的销售额。在记录选定参数使用范围值的情况下,用户可以输入国家/地区的范围(例如,Canada 和 France),以查看在此范围中的所有国家/地区(在此条件下包括 Chili、China、Denmark、England 等等)的销售额。

指定单个值或范围值
选择“离散值”选项或“范围值”选项以指定参数字段是否接受范围值。
如果选择“离散值”,则参数字段将接受单个值(而不是范围值)。
如果选择“范围值”,则当提示您输入参数值时,可以输入起始值和结束值。例如,如果输入值“5”和“10”,则范围为 5-10,将此参数用于记录选定区域的报表会显示介于值 5 和 10 之间的所有记录。这也适用于字符串参数字段。对于起始值“A”和结束值“E”,将此参数用于记录选定区域的报表会显示字母范围 A-E 内的所有记录。
注意: 如果选中“允许多个值”和“离散值”选项,则该参数字段将接受多个单个值。在这种情况下,可输入多个值,但是这些值将被分别求值并且不会被解释为范围。如果选中的是“允许多个值”和“范围值”选项,则参数字段将接受多个范围。

如可用,单击“设置默认值”选择“长度限制”复选框以指定字段的长度。如果选择“长度限制”复选框:
对于“货币”或“数字”参数字段,出现用于输入“最小值”和“最大值”的选项。
对于“日期时间”参数字段,出现用于输入“开始日期时间”和“结束日期时间”的选项。
对于“日期”参数字段,出现用于输入“开始日期”和“结束日期”的选项。
对于“时间”参数字段,出现用于输入“开始时间”和“结束时间”的选项。
------------------------------------------------
...全文
45 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxshzf 2003-12-03
  • 打赏
  • 举报
回复
收藏!
haibodotnet 2003-11-14
  • 打赏
  • 举报
回复
如何向 CrystalReportViewer 和 ReportDocument 传递参数……

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

在运行时修改参数字段

[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:\reports\my 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();
haibodotnet 2003-11-10
  • 打赏
  • 举报
回复
……
dishou 2003-11-10
  • 打赏
  • 举报
回复
收藏!
haibodotnet 2003-11-09
  • 打赏
  • 举报
回复
……
Ruike_Matrix 2003-11-07
  • 打赏
  • 举报
回复
……
Ruike_Matrix 2003-11-07
  • 打赏
  • 举报
回复
……
haibodotnet 2003-11-06
  • 打赏
  • 举报
回复
5、将参数包含在公式中
在“视图”菜单上单击“字段资源管理器”。
出现“字段资源管理器”。

选择“参数字段”并单击“新建”。
出现“创建参数字段”对话框。

创建参数字段并保存它。
选择“公式字段”,并单击“新建”。
出现“公式名称”对话框。

输入公式的名称,然后单击“使用编辑器”。
像使用常量值那样使用参数字段创建公式。例如,与其创建国家和地区名称硬编码的公式:
{客户.国家和地区} = "USA"

使用参数字段代替“USA”。

{客户.国家和地区} = {?Country}

为此,请双击数据库字段,按 = 键,然后双击参数。

提示: 通过查找 (?) 可以很容易识别参数字段。

单击公式工作室上的“关闭”。
出现“字段资源管理器”对话框。刚才创建的公式名称突出显示在“公式”列表框中。

将该公式拖放到报表中。
单击“刷新”生成报表。
出现对话框,提示您输入值。
------------------------------------------------
6、使用参数字段定义排序顺序
若要使用参数字段设置排序顺序,首先需要创建包含参数字段的公式,然后基于该公式进行排序。例如,假设您有一个基于“客户”表的客户列表报表。对于每个客户,显示“客户名称”、“城市”、“地区”、“国家和地区”和“电话”。您想根据当时的需要,能够按“国家和地区”、按“地区”或按“城市”排序。

创建参数字段并称之为“排序字段”。
在“提示文本”编辑框中输入类似下面的提示:
键入 R 按“地区”排序,或键入 C 按“城市”排序;否则,数据将按“国家和地区”排序。

从“值类型”下拉列表中选择“字符串”。
您或许想将用户可键入的字符数限制为 1 个。为此,请单击“设置默认值”。
出现“设置默认值”对话框。

选中“长度限制”复选框,将数字 1 键入到“最小长度”和“最大长度”文本框中,然后单击“确定”。
现在,参数字段将只接受单个字符值。该字段将接受“C”作为值,而不接受“City”。

创建类似于下面这样的公式并称之为“排序”:
If {?SortField} = "C" Then {客户.城市}
Else
If {?SortField} = "R" Then {客户.地区}
Else
{客户.国家和地区}


该公式提示您输入参数字段 {?SortField} 的值。如果输入“C”,则该公式将按“城市”字段排序。如果输入“R”,则按“地区”字段排序。如果输入别的内容,或根本不输入任何内容,该公式将按“国家和地区”字段排序。

有关更多信息,请参阅If 语句(Basic 语法)。

将公式放置在报表的“报表页眉”节中,然后选择“节专家”中的“取消(无深化)”,以便不输出该公式。
单击“对记录排序”。
选择公式,然后单击“添加”。
单击“确定”。
现在,当运行报表时,程序将提示您输入排序字段,公式将根据选定内容返回值,而排序工具将使用该值作为排序字段。
------------------------------------------------
7、使用编辑掩码定义输入类型和格式
在“视图”菜单上单击“字段资源管理器”。
选择“参数字段”并单击“新建”。
出现“创建参数字段”对话框。

输入“名称”、“提示文本”和“值类型”。
单击“设置默认值”。
对于要为其设置默认值的字符串参数字段,可选择在 “编辑掩码” 字段中输入编辑掩码,而不是指定范围。编辑掩码可以是任何一组屏蔽字符,用于限制可作为参数值输入的值(编辑掩码还限制可作为默认提示值输入的值)。

可输入下列任意屏蔽字符,或这些字符的任意组合:

“A”(允许字母数字字符并要求在参数值中输入字符)。
“a”(允许字母数字字符,不要求在参数值中输入字符)。
“0”(允许数字 [0 到 9] 并要求在参数值中输入字符)。
“9”(允许数字或空格,不要求在参数值中输入字符)。
“#”(允许数字、空格或加/减号,不要求在参数值中输入字符)。
“L”(允许字母 [A 到 Z] 并要求在参数值中输入字符)。
“?”(允许字母,不要求在参数值中输入字符)。
“&”(允许任何字符或空格并要求在参数值中输入字符)。
“C”(允许任何字符或空格,不要求在参数值中输入字符)。
“. , : ; - /”(分隔字符)。在编辑掩码中插入分隔字符有点像对参数字段进行硬编码格式设置。将字段放到报表上后,分隔字符将出现在字段对象框架中,就像这样:LLLL/0000。本例描述要求 4 个字母后跟 4 个数字的编辑掩码。
“<”(使随后的字符转换为小写字符)。
“>”(使随后的字符转换为大写字符)。
“\”(使随后的字符显示为字面值)。例如,编辑掩码“\A”将显示参数值“A”。如果编辑掩码为“00\A00”,则有效的参数值将依次包含两个数字、字母“A”以及另外两个数字。
“密码”。允许将编辑掩码设置成“密码”,可创建条件公式指定报表的某些部分只有在输入特定的用户密码后才可见。
注意: 一些编辑掩码字符要求在它们的位置输入字符(当输入参数值时),而另一些允许在需要时保留空格。例如,如果编辑掩码是 000099,由于编辑掩码字符“9”不要求输入字符,因此可输入 4 个数字、5 个数字或 6 个数字的参数值。但是,由于“0”要求输入字符,因此输入的参数值不能少于 4 个数字。

将值添加到“选择或输入要添加的值”列表或突出显示该列表中值,并使用 > 和 >> 按钮将这些值添加到“默认值”列表,以此来输入默认提示值。
可以使用 < 和 << 按钮从列表中删除提示值。添加的项出现在“输入参数值”对话框上的下拉列表中,其中含有指定的默认提示值。

单击“确定”。
出现“创建参数字段”对话框。

注意: 当“默认值”列表框中有多项时,将出现“允许编辑默认值”复选框。默认情况下选定该复选框,以指定在提示输入参数值后可编辑或输入新值。根据需要选择或清除该复选框。

单击“确定”。
出现“字段资源管理器”对话框,其中的参数被选定。

将该参数拖放到报表中。
sarcophile 2003-11-06
  • 打赏
  • 举报
回复
收藏
haibodotnet 2003-11-06
  • 打赏
  • 举报
回复
……

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧