云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

天翼云_网站空间哪家好_免费

小七 141 0

天翼云_网站空间哪家好_免费

在版本9和更新版本中,Crystal有一个称为"Command"的功能。Command是一个SQL Select语句,用户可以编写该语句来提取报表的数据。Command可用于大多数(但不是所有)数据库。要确定是否可以为特定类型的连接创建命令,请在Crystal中打开连接;打开连接名称下的第一行是"Add Command"。

命令使用连接到的数据库的SQL语法。因此,例如,当连接到MS SQL Server时,什么是物联网,"getDate()"函数用于获取当前日期,im即时通讯云,但在Oracle中它将是"SysDate"。Crystal公式不能在命令中使用,因此,任何计算或筛选器都必须使用SQL语法。

下面是在Crystal中使用命令的一些最佳实践。

一个命令应该包括报表中所需的所有数据。

当一个命令在Database Expert中与其他表或命令链接时,Crystal无法将连接推送到数据库进行处理。相反,来自命令的所有数据以及来自表的所有数据都被拉入内存,Crystal将处理连接。对于内部连接,这通常意味着进入内存的数据要比报表上实际使用的数据多得多。因此,将命令连接到表或其他命令会显著降低报表处理速度

任何数据过滤都必须在命令的Where子句中完成。

当选择专家用于命令时,Crystal再次无法将过滤器向下推到数据库,而是将所有数据拉入内存并处理数据过滤那里。就像一个命令连接到表或其他命令一样,这会大大降低报表处理速度。

SQL表达式。使用命令时,无法在字段资源管理器中为报表创建或使用SQL表达式。相反,平销返利,SQL表达式的语法应该在命令本身中用作附加的"字段"或在Where子句中使用。

参数。

1.命令中使用的参数必须在命令编辑器中创建。命令编辑器无法"查看"在报表的字段资源管理器中创建的参数。但是,在命令编辑器中只能设置参数名称、提示文本、值类型、默认值以及提示是否允许多个值。

另外,如果在命令编辑器中创建了一个参数,但没有在命令编辑器中使用,则不会为报表实际创建该参数。但是,一旦在命令编辑器中创建了一个参数,并且在命令编辑器中使用了该参数一个命令,可以在报表的字段资源管理器的参数部分进行修改。这样可以使参数成为动态的,并且几乎可以设置任何其他属性。

2.当参数是字符串值时,必须在命令中用单引号括起来才能工作。当参数是多选时,使用"In"而不是"="。因此,where子句可能如下:

whereMyTable.StringField文件= ‘{?字符串参数}'

和MyTable.NumberField字段在({)?多选数字参数})

和MyTable.DateField= {?日期参数}

3。命令中使用的参数不能是可选的。相反,我通常使用默认值"*All"(星号使其在动态参数中排序到顶部)来指示应选择所有值。在Where子句中,如何获得大数据,它的用法类似于:

Where('{?String Param}'='*All'或MyTable.StringField文件= ‘{?字符串参数}')

4。不要使用为报表提供数据的命令为动态参数提供数据。在运行该命令之前,参数不会显示任何字段值。相反,请执行以下操作之一:

a.如果报表是通过BusinessObjects(BO)或Crystal Reports Server(CRS)运行的,请使用随客户机工具一起安装的Business View Manager创建将为动态参数提供数据的值列表。通常,在BO或CRS中运行的报表的所有动态参数都应该在业务视图管理器中创建和管理—这样效率更高,并且允许重复使用参数,而不是为每个报表重新创建参数。在将来的某个时候,我计划发布一篇博客,详细介绍如何执行此操作。

b.如果报表不可用通过BO或CRS运行,然后执行以下操作:

当遵循这些最佳实践时,命令可以成为在Crystal报表中提供数据的非常强大的工具。特别是当在Crystal中链接表时,在命令中可以完成的事情是无法完成的。例如,可以过滤日期数据以仅显示最近的日期,使用"Having"子句仅显示满足某个摘要阈值的数据,使用"Union"查询,甚至可以透视数据,使其显示为交叉表,而无需实际使用交叉表。几乎任何可以在数据库中的SQL查询中完成的操作都可以在命令中完成,这使它成为一个强大的报告工具。

,返现卡