首页 \ 问答 \ SSRS 2008 - 以零情景处理分割(SSRS 2008 - Dealing with division by zero scenarios)

SSRS 2008 - 以零情景处理分割(SSRS 2008 - Dealing with division by zero scenarios)

我们的报告中遇到问题。 在我们的一个tablix中,一个文本框具有以下表达式:

=Iif(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / Fields!SomeField.Value)

这应该是很自明的。 如果“SomeField”为零,请将文本框设置为零,否则将其设置为“SomeOtherValue / SomeValue”。

我们所遗憾的是,尽管上述表达式应该防止这种情况的发生,但报告仍然会引发运行时异常“试图除以零”。

我们用这个表达方式点了点头,以确保零点检查工作正常

=Iif(Fields!SomeField.Value = 0, "Yes", "No")

精美地工作 数据实际上为零的情况导致文本框显示“是”,反之亦然。 所以检查工作正常。

我的直觉是,报告渲染引擎在运行时抛出异常,因为它“看起来”好像我们要除以零,但实际上我们不是。

有人遇到同样的问题吗? 如果是这样,你做什么来让它工作?


We're running into a problem with one of our reports. In one of our tablixes a textbox has the following expression:

=Iif(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / Fields!SomeField.Value)

Which should be pretty self-explanatory. If "SomeField" is zero, set the text box value to zero, else set it to "SomeOtherValue / SomeValue".

What has us stumped is that the report still throws a runtime exception "attempted to divide by zero" even though the above expression should prevent that from happening.

We fiddled a bit with the expression just to make sure that the zero-check is working, and

=Iif(Fields!SomeField.Value = 0, "Yes", "No")

works beautifully. Cases where the data is in fact zero resulted in the textbox displaying "Yes" and vice versa. So the check works fine.

My gut feel is that the Report rendering engine throws the exception at run-time, because it "looks" as if we are going to divide by zero, but in actual fact, we're not.

Has anyone run into the same issue before? If so, what did you do to get it working?


原文:https://stackoverflow.com/questions/5471817
更新时间:2019-07-11 02:28

最满意答案

在决定哪一个实际返回之前,IIf将始终对这两个结果进行评估。

尝试

=IIf(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / IIf(Fields!SomeField.Value = 0, 1, Fields!SomeField.Value))

如果SomeOtherField.Value = 0,这将使用1作为除数,不会产生错误。 父IIf将为整个表达式返回正确的0。


IIf will always evaluate both results before deciding which one to actually return.

Try

=IIf(Fields!SomeField.Value = 0, 0, Fields!SomeOtherField.Value / IIf(Fields!SomeField.Value = 0, 1, Fields!SomeField.Value))

This will use 1 as the divisor if SomeOtherField.Value = 0, which does not generate an error. The parent IIf will return the correct 0 for the overall expression.

2011-03-29

相关问答

更多

在ssrs 2008中扩展/折叠矩阵(Extend/collapse a matrix in ssrs 2008)

您不需要组来设置切换功能,它可以在Tablix的任何单元格上使用。 使用以下数据排列创建Tablix。 Total是硬编码的,将Name和Point字段拖放到详细信息组上的单元格中。 选择行并右键单击它,选择Row Visibility... : 在“行可见性”窗口中,选择“隐藏和显示”可以通过此报告项切换:选择“总计硬编码”的文本框。 在我的例子中是Textbox 71。 现在预览您的报告,您将得到以下内容: 如果这有帮助,请告诉我。 You don't need a group to set ...

基于ssrs 2008中的聚合对矩阵进行排序(Sorting matrix based on aggregation in ssrs 2008)

尝试在行组中设置排序。 转到“行组”窗格,然后右键单击“组”原因。 选择“组属性...”,然后转到“排序”选项卡。 按表达式添加新排序,并选择AZ表示升序,或选择ZA表示降序。 =Count(Fields!CancelID.value) 如果这有帮助,请告诉我。 Try setting the sorting in your Row Group. Go to Row Group pane and right click the group Reason. Select Group propert ...

将SSRS 2008报告导出为RTF(Exporting a SSRS 2008 report to RTF)

SQL Server Reporting Services不支持RTF作为开箱即用的呈现格式。 如果您需要此功能,您有两种选择: 1)开发自定义渲染扩展 要么 2)购买第三方解决方案,例如此解决方案 SQL Server Reporting Services does not support RTF as a rendering format out of the box. If you want this functionality you have two options: 1) Develo ...

使用TeamCity部署SSRS 2008 R2报告项目(Using TeamCity to deploy SSRS 2008 R2 Reporting Projects)

您可以将Report Server Web服务用于此目的。 它具有CreateItem方法,可将报告上载到 Reporting Service。 要创建上传rdl文件的C#项目,您需要为您的ReportService2010.asmx端点创建代理类 ,然后使用它是这样的: ReportingService2010 reportingService = new ReportingService2010(); reportingService.Url = url + "/ReportService20 ...

如何在SSRS 2008中旋转折线图?(How to rotate line chart in SSRS 2008?)

我用一些技巧解决了我的问题。 如果您在使用折线图的SSRS中遇到此类问题: 将图表类型从线条更改为条形图。 输入系列属性的属性窗口。 设置填充属性“No Color”(不幸的是,您必须为每个ChartData执行此操作...)。 设置图例属性(颜色和形状...)(不幸的是,您必须为每个ChartData执行此操作...)。 为每个系列设置PointWidth属性0。 查找PointWidth属性首先,单击每个系列并显示Visual Studio的“属性”窗口。 它位于自定义属性下。 I have ...

SSRS 2008 - 以电子邮件形式发送报告(SSRS 2008 - Sending report as email)

System.Net.Mail不支持在MHTML显示为消息的情况下发送MHTML电子邮件(请参阅此页面,其中有人尝试将MHTML作为电子邮件发送 )。 您看到代码的原因是messageBody期待HTML,而代码正在为它提供MHTML文档。 该字符串不会自动取消编码。 以下是一些选项: 将格式参数从MHTML更改为HTML3.2或HTML4.0。 然后,SQL Reporting Services将为您提供RAW HTML。 将MHTML作为附件发送而不是内联。 使用SSRS内置的电子邮件订阅功能 ...

SSRS 2008 - Reporting Services网页除了标题之外是空白的(SSRS 2008 - Reporting Services Webpage is Blank except for headers)

解决了它,有点! 我尝试右键单击IE并选择以管理员身份运行,然后转到报表管理器URL,一切正常。 我点击了页面右上角的站点设置,并将greg用户添加为系统管理员和系统用户。 我还将greg用户添加为根目录中的内容管理器。 IT仍然说我已经是该机器上的本地管理员,但似乎需要这样才能使其工作。 有什么想法为什么这是必要的? Solved it, sort of! I tried right clicking IE and selecting run as administrator, and then ...

在Visual Studio 2008 SSRS中水平合并单元格(Merge cells horizontally in Visual Studio 2008 SSRS)

合并单元格选项仅适用于所有单元格都在同一组中的情况,但在您的情况下,它看起来像最左侧的单元格属于不同的组。 尝试在右侧的两个单元格上应用合并单元格功能,将出现合并单元格选项。 Merge cell option only work when all the cells are in the same group, however in your case it appears like the left most cell belong to different group. Try applyi ...

相关文章

更多

最新问答

更多
  • Unity着色器错误;(Unity shader error; presumably in if statement)
  • 如何在Liferay portlet中设置Cookie?(How to set a Cookie in Liferay portlet?)
  • C#只读访问List <>或其他集合,或ToArray()魔术(C# readonly access to List<> or other collection, or ToArray() magic)
  • 如何使用Google Web工具包创建登录应用程序?(How to create a login application using Google web tool kit? [closed])
  • 如何使我的函数返回结果作为全局变量?(How to make my function return results as a global variable?)
  • 为什么我的网站需要“启用32位应用程序”?(Why does my website need “Enable 32-bit applications”?)
  • 红宝石数组具有相同的值(ruby array of hash with same value)
  • Android(在Scala中):StackOverflowError取决于何时启动线程?(Android (in Scala): StackOverflowError depends on when to start a thread?)
  • 适用于iOS应用的通用链接(Universal Links for iOS apps)
  • 创建并打开文件linux编程(create and open file linux programming)
  • Datepicker,第2个日期是从第1个日期开始的X天(Datepicker, 2nd date is X days from 1st date)
  • 背景大小过渡不起作用(Transition on background-size doesn't work)
  • 在React / Redux中的On Click函数中传递Prop(Passing a Prop in an On Click Function in React/Redux)
  • 关键字在代码中做了什么,是否有没有此关键字的替代方法?(what does the keyword this does in the code and are there any alternate methods without this keyword? [duplicate])
  • 反向设计FoxPro / dBsae数据库以创建EER模型(Reverse Engineer a FoxPro/dBsae database to create the EER model)
  • 在R中的变量中组合具有相同值的行(Combine rows that have same value in a variable in R [duplicate])
  • SQL Server:非空唯一主键(SQL Server: Non-null unique vs. Primary Key)
  • 将扩展ASCII字符代码转换为ISO-8859-1(Convert extended ASCII character codes to ISO-8859-1)
  • 如何在.NET中读取m4a文件中的标签?(How to read tags out of m4a files in .NET?)
  • 呼叫链接的性能提升?(Performance gain on call chaining?)
  • 风景名胜区规划设计文本里面都包含哪些内容?推荐一家旅游规划设计公司?谢谢!
  • 如何在String中将字符串转换为枚举?(How do I convert a string to enum in TypeScript?)
  • SQLite SELECT出现异常如何解决它?(SQLite SELECT gives exception How to fix it?)
  • NSLog不会从ViewController类输出,而是来自AppDelegate类的WILL。(NSLog will NOT output from the ViewController class, but WILL from the AppDelegate class. iOS:Objective C)
  • 更改UIPicker突出显示的标签宽度(change UIPicker highlighted tab width)
  • 空心倒五角形(Hollow inverted pentagon)
  • 如何设置仅使用OpenID的Plone站点(How to setup Plone sites working only with OpenID)
  • Paperclip缺少Amazon S3的协议(https)(Paperclip is missing the Protocol (https) with Amazon S3)
  • 从宏中部署netbeans中的ANT文件(Deploy ANT file in netbeans from macro)
  • XMLReader是未知的(XMLReader is unknown)