如何使用Business Objects SDK将空值传递给Business Objects报表中的可选参数?

问题描述:

我正在构建一个Web前端,用于使用Business Objects SDK for .NET访问Business Objects报表。我可以通过网上提供的稀疏文档和论坛帖子来讨论该主题的95%的业务需求。我最后的障碍在于使用参数化报告。我们的业务在报告中有两个参数,最终用户只需填写其中一个参数。收集和清理这些数据非常简单,但无论如何将空值参数传递给报告,我都不会收到任何数据。如果两个参数都填充了,我会得到预期的数据。在单步执行Visual Studio中的代码时,我会看到每当BusinessObjects返回一个空值参数时,它将显示为空字符串(“”)。我曾尝试将此作为参数值传递,并尝试将参数赋值为null。报告安排并运行后,这些选项都不会返回结果。我在下面使用我已经采用的每种方法都有一个我的参数赋值代码示例(我们需要检查字符串值为“null”,因为用户请求输入“null”并将其传递给报告)。这些都不会产生包含数据的报告。如何使用Business Objects SDK将空值传递给Business Objects报表中的可选参数?

sVal.Value = param.ParameterValue != "null" ? param.ParameterValue : String.Empty; 
sVal.Value = param.ParameterValue != "null" ? param.ParameterValue : ""; 
sVal.Value = param.ParameterValue != "null" ? param.ParameterValue : null; 

是否有企业服务器使用,表示空一个特定的值,如需要日期被包裹在日期()?

编辑:我需要复制在InfoView中看到的功能: Image of null parameter option in InfoView

+0

您是否正在使用Oracle存储过程? – craig

在Web Intelligence中,默认情况下,所有的提示是必需的,你必须通过SDK提供了它的价值。从BusinessObjects XI R3开始,可以将报告中的提示实际配置为可选。该配置由报告编写者完成。如果提示是可选的,那么您可以选择在使用SDK时不设置提示值。

到具有可选的提示的另一种方法是使提示“匹配模式”,或者如果它是一个日期,计算出的默认值。当提示符是可选的并且“在列表中”时,则可以将该值设置为“%”,而对于某个日期,该值设置为默认值。

+0

谢谢shrub34 - 也许我应该澄清 - 在我的特殊用例中,参数是否为可选参数并不重要。我的具体问题是,当传递一个参数时,我无法给它一个null值并让报告返回结果。即如果报告有两个参数“foo”和“bar”,我需要能够通过foo =“value”和bar =“null”。在InfoView中,用户可以选择将任何一个值设置为null,并返回所有非空值结果。如果我通过sdk将param设置为null,那么报告将返回空值,而不管我上面的各种“空”风格。 – Tuck

+0

我已经添加了InfoView的屏幕截图,以展示我需要复制的功能。 – Tuck

+0

好吧,我同意我的回答没有提供帮助。我从未见过“设置为空”选项。我对你想要实现的东西做了一个错误的假设。该报告是Web Intelligence还是Crystal报告?如果是Crystal添加标签可能有助于找到答案。 – shrub34