Crystal reports 动态参数未将值列表拉出字段
我在制作的特定Crystal报表中有两种参数——两个日期直接用于SQL查询,另一个参数将根据查询中的销售代表筛选报表 当我创建命令时,我定义了两个日期(date1和date2,如果您愿意的话),它们工作正常。但是,当添加动态参数以选择“sales rep”字段所需的值时,只会显示一个文本框,这意味着参数列表没有像广告中那样动态生成 我知道其原因——查询尚未运行,因此没有任何动态值可供提取。日期范围也是一个必要的缺点,因为如果由于太多较旧的记录(需要保留以实现历史目的)而没有设置日期范围,则报告运行需要五分钟 是否可以动态生成此列表,或者我必须用静态值更新列表Crystal reports 动态参数未将值列表拉出字段,crystal-reports,Crystal Reports,我在制作的特定Crystal报表中有两种参数——两个日期直接用于SQL查询,另一个参数将根据查询中的销售代表筛选报表 当我创建命令时,我定义了两个日期(date1和date2,如果您愿意的话),它们工作正常。但是,当添加动态参数以选择“sales rep”字段所需的值时,只会显示一个文本框,这意味着参数列表没有像广告中那样动态生成 我知道其原因——查询尚未运行,因此没有任何动态值可供提取。日期范围也是一个必要的缺点,因为如果由于太多较旧的记录(需要保留以实现历史目的)而没有设置日期范围,则报告运
谢谢。要使动态参数起作用,您必须将任何包含“sales rep”字段的表添加到报告中。您可以将该表拉入正在创建的SQL命令旁边,然后使用外部联接以任何方式链接它们,这样就不会限制您的记录(您甚至可以根本不链接它们,但Crystal会抱怨有“多个起点”之类的内容) 现在,您可以将销售代表拉入动态参数中,并在SQL命令本身中将其作为参数使用,也可以在记录选择公式中使用它来过滤SQL命令的结果。在这两种情况下,CR将查询数据库两次;第一次仅查询整个销售代表列表,第二次运行SQL命令
这里的主要要点是,为了成为填充动态参数的候选对象,报表中需要有表格,而不是命令……即使您不会在报表中再次使用该表格。希望这能有所帮助,即使已经晚了7个月。最终解决了这个问题:
Exec myReportStoredProcess
Exec MyCrystalParameterList
- Crystal reports将在您打开报告后立即执行这两个存储过程
- Crystal reports不会根据reporting services(SSRS)等参数提取数据
- Crystal根据收集所有数据后选择的参数值过滤数据
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
...
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 <<
运行MyCrystalParameterList将返回以下内容:
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
...
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 <<
1站XX 7A
1个CC 88
2尼斯XX C3
3回路EE C3
3回路DD C3
>>一个独特的值列表只有5行,请单击名为“链接”的选项卡
在本节中,您将表/列链接在一起。您本可以在上面的步骤中完成此操作,但为了更好地理解,我希望您在显示为两个存储过程(表)返回的数据后在此处完成此操作
*创建级联参数*
在Crystal Reports中,可以找到Field Explorer面板。它通常位于屏幕的右侧
- 现在右键单击[参数字段]并选择[新建]
- 命名参数
- 将类型保留为[String]
- 将“值列表”设置为[动态]
- 将“选择数据源”径向按钮设置为[新建]
- 在“径向”按钮下的表格中,单击单词“值”下的第一行
- 将显示显示两个表的下拉列表([MyReportStoredProcedure和MyCrystalParameterList])
- 从MyCrystalParameterList存储过程(表)中选择第一个参数的列
- 您的列现在列在第一行中
- 现在单击下一行并从参数存储过程(表)中选择下一列
- 重复此操作,直到所有所需参数都显示在表格行中
- 在该表的右侧,您将看到一个名为“Parameters”的列,该列中的每一行都有文本
- 单击“参数”列中的每个字段,将在Crystal report中创建一个与参数存储过程(表)列相对应的参数
- 单击“确定”关闭“创建新参数”对话框
如果运行报告,系统将提示您为参数选择值,参数将列出可用值
所有数据都将在报告中返回!!!我们还没有完成
*最后一步(最后!)*
告诉Crystal reports根据参数值筛选报告数据
在crystal reports中,单击报告->选择专家->记录
- 将显示“选择字段”对话框
- “字段”面板查找报表存储过程并将其展开,以便显示列
- 选择链接到参数存储过程(表)的列之一
- 现在,您将看到一个默认值为“IsAny value”的公式对话框
- 改变