我在我正在制作的特定Crystal Report中有两种参数 - 我在SQL查询中直接使用的两个日期,以及一个将根据查询中的销售代表过滤报表的参数。
我在创建命令时定义了两个日期(date1和date2,如果你愿意的话),那些工作正常。但是,在添加动态参数以选择“销售代表”字段所需的值时,仅显示一个文本框,这意味着参数列表尚未像广告中那样动态生成。
我知道原因 - 查询尚未运行,因此没有任何动态值可供选择。日期范围也是一个必要的恶魔,因为如果没有设置日期范围由于许多旧记录(需要坚持做历史目的),报告需要运行五分钟。
是否可以动态生成此列表,还是我不得不使用静态值更新列表?
感谢。
答案 0 :(得分:1)
要使动态参数起作用,您必须将任何表添加到包含“sales rep”字段的报表中。您可以将表格拉到您正在创建的SQL命令旁边,只需将它们链接到您想要的外部联接,以便不限制您的记录(您甚至可以根本不链接它们,但Crystal会抱怨有“多个起点”或其他什么。
现在,您可以将销售代表拉入动态参数,并将其作为参数在SQL命令本身中使用,或者您可以在记录选择公式中使用它来过滤SQL命令的结果。在这两种情况下,CR都会查询数据库两次;第一次简单地获取整个reps列表,第二次运行SQL Command。
这里的主要内容是表格,而不是命令,需要在报告中才能成为填充动态参数的候选者......即使您不在报告中再次使用该表格。希望这有助于,即使它已经晚了7个月。
答案 1 :(得分:1)
最后想出来了:
示例1:Exec MyReportStoredProcedure
示例2:Exec MyCrystalParameterList
*现在是时候将参数链接到数据了。 * 强>
运行MyReportStoredProcedure会返回以下内容:
1 Stop XX 7A [columns5] [columns6] [columns7] [columns8]
1 Gone CC 88 [columns5] [columns6] [columns7] [columns8]
1 Gone CC 88 [columns5] [columns6] [columns7] [columns8]
2 Nice XX C3 [columns5] [columns6] [columns7] [columns8]
3 Loop EE C3 [columns5] [columns6] [columns7] [columns8]
3 Loop DD C3 [columns5] [columns6] [columns7] [columns8]
3 Loop DD C3 [columns5] [columns6] [columns7] [columns8]
...
... 700,000,000 Additional records
...
运行MyCrystalParameterList会返回以下内容:
1 Stop XX 7A
1 Gone CC 88
2 Nice XX C3
3 Loop EE C3
3 Loop DD C3
>> A distinct list of values only 5 rows <<
*将参数数据列链接到相应的报告列*
现在将参数Column1链接到报告column1。此链接将主报表值(MyReportStoredProcedure)与参数值(MyCrystalParameterList)相关联。
在数据库下的Crystal Reports中 - &gt; Database Expert单击名为Links的选项卡。
在本节中,您将表/列链接在一起。您可以在上面的步骤中完成此操作但为了更好地理解,我希望您在显示为两个存储过程(表)返回的数据后在此处执行此操作。
*创建级联参数*
在Crystal Reports中找到Field Explorer面板。通常它位于屏幕的右侧。
如果您运行报告,系统将提示您选择参数值,参数将列出可用值。
所有数据将在报告中返回!我们还没有完成。
*最后一步(最后!)*
告诉Crystal报表根据参数值过滤报表数据。
在水晶报告中,点击报告 - &gt;选择专家 - &gt;记录
A&#34;选择字段&#34;对话框将显示
“字段”面板查找报告存储过程并展开它以使列显示
选择链接到参数存储过程(表)的其中一列。
现在,您将看到一个公式对话框,其默认值为&#34;是任何值&#34;。
将此值更改为&#34;等于&#34;
右侧会出现一个下拉框。
下拉框将显示您的参数!!!!!!
选择与您选择的报告字段对应的参数。
重复所有参数。
现在运行您的报告。数据现在由参数值!!
你完成了!!!!感谢上帝!
注意: 您可以为每个参数创建一个存储过程。只需使用Database Expert将它们添加到报告中即可。
在我的示例中,我创建了一个存储过程来提取所有可能的参数组合。
请勿调整您的注册设置,并将结晶报告读取超过1000个记录!!!
您的报告存储过程可以返回10亿条记录,但您的参数列表不应超过1000个唯一值。
您无法从报表存储过程构建参数列表,因为水晶报表只会查看前1000条记录。
您的参数列表必须是一个单独的存储过程,可以提取不同的值。
*你有基础,现在构建其余部分。祝好运。 * 强>