Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Crystal reports 动态参数未将值列表拉出字段_Crystal Reports - Fatal编程技术网

Crystal reports 动态参数未将值列表拉出字段

Crystal reports 动态参数未将值列表拉出字段,crystal-reports,Crystal Reports,我在制作的特定Crystal报表中有两种参数——两个日期直接用于SQL查询,另一个参数将根据查询中的销售代表筛选报表 当我创建命令时,我定义了两个日期(date1和date2,如果您愿意的话),它们工作正常。但是,当添加动态参数以选择“sales rep”字段所需的值时,只会显示一个文本框,这意味着参数列表没有像广告中那样动态生成 我知道其原因——查询尚未运行,因此没有任何动态值可供提取。日期范围也是一个必要的缺点,因为如果由于太多较旧的记录(需要保留以实现历史目的)而没有设置日期范围,则报告运

我在制作的特定Crystal报表中有两种参数——两个日期直接用于SQL查询,另一个参数将根据查询中的销售代表筛选报表

当我创建命令时,我定义了两个日期(date1和date2,如果您愿意的话),它们工作正常。但是,当添加动态参数以选择“sales rep”字段所需的值时,只会显示一个文本框,这意味着参数列表没有像广告中那样动态生成

我知道其原因——查询尚未运行,因此没有任何动态值可供提取。日期范围也是一个必要的缺点,因为如果由于太多较旧的记录(需要保留以实现历史目的)而没有设置日期范围,则报告运行需要五分钟

是否可以动态生成此列表,或者我必须用静态值更新列表


谢谢。

要使动态参数起作用,您必须将任何包含“sales rep”字段的表添加到报告中。您可以将该表拉入正在创建的SQL命令旁边,然后使用外部联接以任何方式链接它们,这样就不会限制您的记录(您甚至可以根本不链接它们,但Crystal会抱怨有“多个起点”之类的内容)

现在,您可以将销售代表拉入动态参数中,并在SQL命令本身中将其作为参数使用,也可以在记录选择公式中使用它来过滤SQL命令的结果。在这两种情况下,CR将查询数据库两次;第一次仅查询整个销售代表列表,第二次运行SQL命令


这里的主要要点是,为了成为填充动态参数的候选对象,报表中需要有表格,而不是命令……即使您不会在报表中再次使用该表格。希望这能有所帮助,即使已经晚了7个月。

最终解决了这个问题:

  • 使用SQL创建用于收集报表数据的存储过程。此存储过程不能有参数。它必须在执行时生成所有报表数据
  • 示例1:
    Exec myReportStoredProcess

  • 创建另一个存储过程以收集参数列表值。同样,存储过程中未使用任何参数
  • 示例2:
    Exec MyCrystalParameterList

  • 在“数据库->数据库专家”下的Crystal Reports中,将两个存储过程(称为表)添加到“所选表”部分。单击“确定”。Crystal将尝试在两个表之间建立链接。单击“删除所有链接”。在随后出现的所有链接警告上单击“确定”
  • 现在使用MyReportStoredProcess中的列构建报告
  • 运行报告。您将不会收到输入参数的提示。所有可能的数据都将显示在报告中
  • *现在是时候将参数链接到数据了。*

    • Crystal reports将在您打开报告后立即执行这两个存储过程
    • Crystal reports不会根据reporting services(SSRS)等参数提取数据
    • Crystal根据收集所有数据后选择的参数值过滤数据
    运行MyReportStoredProcess将返回以下内容:

    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”的公式对话框

    • 改变