Crystal reports Crystal报告动态参数值
我有一个带有动态参数的crystal报告(例如,在某些数据库中链接到表国家)。 如何以编程方式获取此参数的允许值(国家列表)? 对于静态,我可以使用以下方法获取默认值:Crystal reports Crystal报告动态参数值,crystal-reports,Crystal Reports,我有一个带有动态参数的crystal报告(例如,在某些数据库中链接到表国家)。 如何以编程方式获取此参数的允许值(国家列表)? 对于静态,我可以使用以下方法获取默认值: ReportDocument rd = new ReportDocument(); rd.Load(reporthPath); rd.ParameterFields; // contains params with default values collections 动态参数在
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
集合中。考虑使用命名约定来简化参数。可能使用报表中未使用的静态参数来存储表和列信息。是的,我知道。关键是,这只适用于手动输入的默认值静态参数字段。它不适用于动态参数字段,其中默认值是从报表中选定的数据库表填充的。所以,除非你能用一个有效的代码示例来证明这一点,否则我一直不同意你的观点。