在CRYSTAL REPORT中排序

时间:2010-03-11 11:46:50

标签: crystal-reports

我用C#编写了一个程序。 我在水晶报告中有问题。我想通过单击标题中的链接对报表中的数据进行排序。水晶报告中有可能吗?

请帮忙 感谢...

1 个答案:

答案 0 :(得分:2)

有点儿。

如果使用BusinesObjects Enterprise(BOE)分发报表,则可以:

  • 使用参数字段({?sortedField)创建一个报告,该字段将用于设置报告的排序
  • 创建一个公式字段({@sortedField}),该字段使用{?sortedField}来选择应该用于排序的数据库字段
  • 在报告中引用{@sortedField}报告排序专家
  • 在字段标题中创建一个OpenDocument Url链接,用于将参数字段设置为所需的值并重新运行报告。

如果你不使用BOE,你可以推出自己的Url方案来做类似的事情。

示例:

<强>假设

  • 使用Xtreme.mdb创建报告。
  • 该报告是客户名称(Customer.Customer Name)和Region(Customer.Region)的两列列表

<强>实施

创建两个参数字段:

AscSortedField - String;默认值:CustomerName DescSortedField - String;默认值:忽略

创建两个公式字段:

AscSortedField

//AscSortedField
//If the parameter's value isn't found, a NULL is returned (a good thing)
SELECT {?AscSortedField}
CASE "CustomerName": {Customer.Customer Name}
CASE "Region": {Customer.Region}

DescSortedField

//DescSortedField
//If the parameter's value isn't found, a NULL is returned (a good thing)
SELECT {?DescSortedField}
CASE "CustomerName": {Customer.Customer Name}
CASE "Region": {Customer.Region}

打开报告的记录排序专家。添加{@AscSortedField};确保其排序方向设置为“升序”。添加{@DescSortedField};确保其排序方向设置为“降序”。

用法

如果要按“客户名称”按升序对报表进行排序,请将AscSortedField参数的值设置为“CustomerName”,并将DescSortedField参数的值设置为虚拟值(例如“忽略”)。

如果要按Region按降序对报表进行排序,请将AscSortedField参数的值设置为“Ignored”,并将DescSortedField参数的值设置为“Region”。