Crystal reports Crystal报告动态参数值

Crystal reports Crystal报告动态参数值,crystal-reports,Crystal Reports,我有一个带有动态参数的crystal报告(例如,在某些数据库中链接到表国家)。 如何以编程方式获取此参数的允许值(国家列表)? 对于静态,我可以使用以下方法获取默认值: ReportDocument rd = new ReportDocument(); rd.Load(reporthPath); rd.ParameterFields; // contains params with default values collections 动态参数在

我有一个带有动态参数的crystal报告(例如,在某些数据库中链接到表国家)。 如何以编程方式获取此参数的允许值(国家列表)? 对于静态,我可以使用以下方法获取默认值:

        ReportDocument rd = new ReportDocument();
        rd.Load(reporthPath);
        rd.ParameterFields; // contains params with default values collections

动态参数在DefaultValues集合中没有项。我可以为报表检索现有连接,但在哪里可以获取连接和动态参数之间的关系?

在Crystal报表中不可能这样做。最好不要使用动态参数字段;他们使你的报告不必要的慢。而是将它们转换为静态参数,并填充代码中的默认值;这就快得多,你也知道接受的价值是什么。< / P > < P >上述答案是错误的-正如水晶报告席(至少我的信息来自哪里)是可能的;看见 ,特别是第2部分(使用参数创建报告)和第5部分(创建显示默认参数的ListBox控件)

基本上,可以从默认值列表中获取可能值的列表

谢谢


MD Tech

在运行此问题以解决我自己的问题后,对现有答案进行了一点改进:

带有静态值列表的
ParameterField
将这些值作为其
DefaultValues
集合中的项。问题是带有动态列表的
参数字段
没有预先填充这些值,而且API似乎没有查询这些值的机制

解决方法涉及使用静态列表而不是动态列表,但可能有数百个可接受的值,这些值可能会随时间而变化。除非记住更改报告很有吸引力,否则在这种情况下,动态列表是有意义的

此外,使用
CrystalDecisions.ReportAppServer.DataDefModel.ParameterField
显示属性
BrowseField
BrowseField
具有属性
TableAlias
Name
,您可以使用ADO.NET查询这些属性。但是,
BrowseField
仅为静态参数填充;使用动态参数时为空。目前,这在SAP的知识库中被记录为“固定需求”


因此,一旦您以某种方式获得了表名和列名,就可以使用ADO.NET查询数据库,并将这些值粘贴到动态参数的
DefaultValues
集合中。考虑使用命名约定来简化参数。可能使用报表中未使用的静态参数来存储表和列信息。

是的,我知道。关键是,这只适用于手动输入的默认值静态参数字段。它不适用于动态参数字段,其中默认值是从报表中选定的数据库表填充的。所以,除非你能用一个有效的代码示例来证明这一点,否则我一直不同意你的观点。