首页 \ 问答 \ 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

相关问答

更多

如何在Python中将标签集转换为属性元组(“多热”编码)?(How to convert set of tags to belongness tuple (“multi-hot” encoding) in Python easy?)

你可以通过列表理解来达到它,添加条件是否标签在标签中,如果是,则插入1否则为0。 multihot = [1 if tag in tags else 0 for tag in taglist] You can reach it with list comprehension, adding condition whether tag is in tags, if yes, insert 1 else 0. multihot = [1 if tag in tags else 0 for tag

在RegExp中处理不同的匹配项(Processing different matches in a RegExp)

您可以将多个正则表达式拼凑在一起,如/(option 1)|(option 2)/g 然后你的回调将收到以下任何一个: callback(match, option1, undefined, offset, subject) // left side matched callback(match, undefined, option2, offset, subject) // right side matched 使用此功能,您的回调可能如下所示: (str, p1, p2) => {

Junit等待并处理异常后断言(Junit assert something after awaiting and handling an exception)

这里的关键是如果你想在异常后恢复执行, 那么try块是至关重要的。 您可以将其分解为方法或库,但必须在测试方法中调用它。 有效的事情: 你和nrainier引用的那种经过验证的fail()成语,我更喜欢: try { foo(); fail("foo did not throw an exception"); } catch (Exception ex) { } catch-exception是一个库,像Mockito一样,包装传递的对象并在每个方法周围放置一个try块。 Mocki

break和continue在Java中不起作用(break and continue doesn't work in Java)

您可以在if语句中使用break ,但必须标记块。 看这个例子: if (choice == 1) first: { // ... break first; // ... } else second: { // ... break second; // ... } 但是,您不能以尝试使用它的方式使用break 。 相反,我建议您按如下方式构建程序: if (choice == 1) { // Code for choice 1 } els

php SimpleXMLelement解析具有多个“潜在”属性的XML标记(php SimpleXMLelement parsing XML tags with multiple 'potential' attributes)

请注意,我没有使用SimpleXML ,因为imho DOMDocument只是太好了,而且更强大。 自PHP5起, DOMDocument和DOMXPath都可用。 我创建了一个简单的解析器类,它解析提供的文档以获得不同样式的条件: class AIMLParser { public function parse($data) { $internalErrors = libxml_use_internal_errors(true); $dom

模板特化类不继承成员(Template specialization class does not inherit members)

只是为了描述问题:您只能访问同一类对象的protected成员。 如果您获得基类的对象(或指向它的指针或引用),则您无权访问其protected成员! 复制相同问题的一个更简单的例子是: class Base { protected: Base(int member): member(member) {} int member; }; class Derived: public Base { public: Derived(Base const& b): Base(b.m

保留上传文件的原始文件名时的注意事项(Considerations when retaining uploaded file's original filename)

简而言之,我想实现一个WebDav系统,并认为最简单的解决方案是以原始名称存储上传的文件 这是一个非常广泛的问题,但要简短回答: 绝不信任用户提供的数据 。 您必须始终进行服务器端验证和清理,否则您迟早会被黑客攻击。 原始文件名由客户端发送,因此它可以是任何内容。 以下是我试图将您作为“原始”文件名发送给您的一些想法,因为您知道自己就是这样 无忧无虑: ../../../../etc/passwd ../../config/db.php或../../config/db.php 。 处理即将到来。

如何在XCTest中覆盖tableview委托(How to override tableview delegate in XCTest)

代表们通常都是弱参考。 如果首先将MockTableViewDelegate分配给局部变量,则在print时使用它仍然应该是活动的。 请尝试以下方法: let delegate = MockTableViewDelegate() mockTableView.delegate = delegate print("delegate===\(mockTableView.delegate)") print(delegate) 第四行是保持对象生存第三行所必需的。 Finally i found thi

相关文章

更多

最新问答

更多
  • 图像TapGestureRecognizer未触发(Image TapGestureRecognizer not firing)
  • 从数组中选择项目(Selecting items from an array)
  • PhpStorm:简单的PHP表单不发布(PhpStorm: Simple PHP form not posting)
  • 如果语句只有Javascript中的数字(If statement with only a number in Javascript)
  • 截图Android中的黑色(Screenshot Black in Android)
  • 默认值如何在数据库中内部工作?(How does default value internally work in Database?)
  • 左连接不加入单个记录(Left Join Not Joining with a Single Record)
  • 在#sign drupal之后获取url参数(get url parameter after # sign drupal)
  • Crontab CD到目录(Crontab CD to Directory)
  • #inf c ++ visual studio(#inf c++ visual studio)
  • 使用Python将指数修改的高斯曲线拟合到数据(Fitting an exponential modified gaussian curve to data with Python)
  • Javascript - 具有音高和持续时间控制的文本到语音(Javascript - text to speech with pitch and duration control)
  • 群组和用户有多少通过?(Groups and Users has many oder has many through?)
  • 如何在简单的二叉树中选择节点所在的哪一侧?(How to pick which side a node is on in a simple binary tree?)
  • 在ImageView上添加TextView(Android)(Add TextView over ImageView (Android))
  • 使用工厂方法创建泛型(Using Factory Method to Create Generics)
  • cordova 4.1.2中的平台特定代码(platform specific code in cordova 4.1.2)
  • 使用php格式化日期[复制](Format date using php [duplicate])
  • 在Python中解析年,月,日,小时,分钟,秒(Parsing year, month, day, hour, minute, second in Python)
  • 用jquery替换图像和类(Replacing image and class with jquery)
  • 导入的module.submodule命名空间干扰彼此(imported module.submodule namespaces interfering with eachother)
  • 播放框架:提交按钮似乎不起作用(Play framework: Submit button doesn't seem to work)
  • 段落包括通过过渡带来的div(Paragraph covers div brought through transition)
  • 使用processing.Manager时对象是否重复?(Object duplicated when using processing.Manager?)
  • lxde意外退出(lxde quits unexpectedly)
  • 真正的Maven依赖是什么?(What really are Maven dependencies?)
  • 如何在我的代码中修复getJSON方法错误?(how to fix getJSON method error in my code?)
  • Google Analytics状态:已安装跟踪 - 但无法正常运行(Google Analytics Status: Tracking Installed - but isnt working)
  • 在模型文件中的非对象上调用成员函数num_rows()(Call to a member function num_rows() on a non-object in model file)
  • 有关UNIX中fork()函数的问题(Questions about the fork() function in UNIX)