问题标签 [crystal-reports-formulas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
19028 浏览

crystal-reports - 如何在水晶报表的文本字段中添加前导零

我正在想办法将前导零添加到字符串字段值。例如,我有 12345,但需要一个将其转换为 012345 的公式。我是 Crystal 的新手,因为我知道这可能是一个简单的公式,但似乎无法让它工作。

提前致谢。

0 投票
2 回答
13225 浏览

crystal-reports - Crystal Report:如果数据在页面的第一条记录上,则取消隐藏数据

我这里有一个在更改字段时会抑制的数据。我做了压制它。但我无法在第一行显示记录。即使它是重复的记录,我也需要显示它。

我努力了

但它不会取消隐藏记录的第一行。

请帮忙。

先感谢您。:)

编辑:

这不是“更改字段”,它是一个关键字段,如果此关键字段重复,则数据将被抑制。

0 投票
1 回答
1180 浏览

c# - 使用显示字符串属性显示 Crystal 报表会导致 ArgumentOutOfRangeException

我有 Microsoft Visual Studio 版本 13.0.14.1720 的 SAP Crystal Reports。我正在尝试在 C# Windows 窗体应用程序中显示报告。该报告现在因 ArgumentOutOfRangeException 而失败。堆栈跟踪如下:

我在 Visual Studio 2015 中运行它并停止执行错误。该字段发生错误:

查看报表定义,该字段位于组页脚上。该字段正在获取运行错误总数的最大值。运行总计评估每条记录并在组更改时重置。

如果至少有 1 个错误,则该字段应该显示一个星号。否则,它是空白的。因此,显示字符串具有以下公式:

如果我在值 <= 0 时更改显示字符串公式的定义以使用“”以外的任何内容,则不会出现错误。比如下面的Display String,就不会出现错误:

显示字符串与同一组页脚中的其他列相同,它们在其他列上执行运行总计。事实上,组页脚上有几个字段与此字段相同。

我尝试从头开始删除和重新创建该字段。发生同样的错误。

我尝试更改“将数据库 NULL 值转换为默认值”和“将其他 NULL 值转换为默认值”的报告选项,但错误仍然存​​在。

我还尝试将报告格式从旧版本升级到最新版本。

报告列定义如下。组标题上的字段正在计算下面 _Error 列的最大值。这些列被定义为整数。

我在 GAC 中的 CrystalDecisions.Shared.dll 上运行了 JetBrains dotPeek。反编译 PageRender.draw_FieldObjectInstance 方法,我看到一些数组索引引用。这对我来说很突出:

上面的代码似乎假设有一个文本行。发生错误时,TextLines 属性的长度为 0。IsFieldNumeric 为 true,fieldObjectInstance.AllowClipping 为 false,因此看起来此代码将运行并失败。

0 投票
1 回答
358 浏览

sql - 尝试根据来自另一个字段的约束对公式字段求和

报告的一些背景知识:这是一份为在我们公司工作的员工提供的生产力报告。我们根据与客户进行访问的持续时间来确定他们的生产力。我们的一些员工提供小组会议。他们向组内的每个客户收费,即使他们只提供例如一小时的服务,但如果组中有 10 人,他们可以按 10 小时计费。我们通过服务代码确定他们提供的服务。

所以,我在这个公式中有两个字段,一个服务代码字段和一个持续时间字段。

持续时间字段最初是数据库中的 STRING 字段,即使它只提供数字数据,所以我将其更改为 numberVar。服务代码字段也是一个字符串字段,它有时确实包含字符和数字。

我需要 Crystal Reports 做的是计算持续时间的总和。但是,如果服务代码是“1000”,则它必须先将持续时间除以 3,然后再对其求和。这就是我被抓住的地方。

这是我的持续时间代码:

然后我为总和做一个单独的公式,名为 sumDuration:

我收到无法汇总此字段的错误。在谷歌搜索了两天后,我发现 Crystal 无法汇总涉及常量的字段或公式。如果我简单地说:

然后我可以总结@duration。我错过了什么?它必须是简单的东西,但我只是没有看到它。有没有办法创建一个自定义函数来完成我想要在这里实现的目标?还是比这更简单?

有人建议创建一个 SQL 命令,以便在数据到达报告之前进行计算。我是一个 SQL 新手,所以我什至不知道从哪里开始。

0 投票
1 回答
473 浏览

gridview - Crystal Reports: Cross-Tab calculating embedded summary comparing multiple cell values

Working with Crystal Reports' GridView object and trying to find a way to compare GridValues amongst a row of values and am having a very difficult time.

Here is the code I am working with in an embedded summary (located directly under the red boxes)...

The problem is that the first Group isn't being looked at (I think...) I kind of fumbled my way to this point, so any advice is greatly appreciated.

hopefully this question is clear enough... but what I am trying to accomplish is setting the color to red for the gridvalue that is the most in the given row...

so the first row that contains 1, 1, 20, 0, 22, 22 I only want the embedded summary to give me 20 because its the largest number (Not counting the totals) and eventually, the red cell will be the largest number (20)

just using embedded summary to show what the value is.

enter image description here

Thanks!

0 投票
1 回答
40 浏览

crystal-reports - Crystal Reports 2011 - 根据某些标准抑制信息

我将尝试在不太混乱的情况下说出这个问题。

我们有一份报告,希望向每位患者及其保险情况展示。患者记录中的每项保险都是按订单号编号的。但是,我们不仅要展示这一点;我想输入某些标准,以便如果保险 A 在患者 ID 下的订单号为 1,则显示该患者的所有保险。如果患者没有订单号 1 中的保险 A,请勿在报告中显示该患者或他们的任何信息。

在下面的代码中,担保人指的是保险。所以订单号和担保人名称是我们关注的重点。这是我为 Suppress 选项放入 Section Expert 的代码。我假设如果它符合标准,TRUE 将抑制信息,否则 FALSE 将允许信息。但是,这还不够,因为它会抑制所有其他信息。

我假设它需要遍历或循环遍历每个患者,如果找到此信息,列出患者的所有信息并继续前进,否则压制并继续前进。我希望这是有道理的。

例子:

在上面的示例中,我希望报告显示来自 Patient #1 的所有内容(包括所有订单号),甚至不在报告中显示 Patient #2。然而,发生的事情是 1 号病人确实出现了,但只有 1 号订单;它抑制了所有其他信息。

我错过了什么?

0 投票
1 回答
111 浏览

crystal-reports - 创建公式以在 Crystal Reports 中按升序显示组收入

大家早上好,我正在尝试为我正在用 Crystal 编写的报告创建一个公式,该公式以 10,000 为增量按升序对家庭年收入进行分组。到目前为止,我已经遵循了我认为正确的“如果-那么”模式。但是我收到一条错误消息,上面写着“剩余的文本似乎不是公式的一部分”。下面是代码内容: crAscendingOrder if{ss_client_data_set.income}< 10001 then "$0 to $10,000" if{ss_client_data_set.income}< 20001.00 then "$10,001 to $20,000" if{ss_client_data_set.income}< 30001.00 then "$20,001 to $30,000" if{ss_client_data_set.income}< 40001.00 then "$30,001 to $40,000" if{ss_client_data_set.income}< 50001.00 then "$40,001 to $50,000" if{ss_client_data_set.income}< 60001.00 then "$50,001 to $60,000" if{ss_client_data_set.income}< 70001.00 then "$60,001 to $70,000" if{ss_client_data_set.income}< 80001.00 then "$70,001 to $80,000" if{ss_client_data_set.income}< 90001.00 then "$80,001 to $90,000" if{ss_client_data_set.income}< 100001.00 then "$90,001 to $100,000" if{ss_client_data_set.income}< 110001.00 then "$100,001 to $110,000" if{ss_client_data_set.income}< 120001.00 then "$110,001 to $120,000" if{ss_client_data_set.income}< 130001.00 then "$130,000 and over"

发生的情况是错误检查器仅突出显示最后 12 行代码。我有点生疏,所以如果有人有任何建议,我将非常感激。

谢谢

0 投票
1 回答
528 浏览

crystal-reports - 水晶报告 if then else 具有多条记录的公式

我有一个表,每个作业都有多个记录#。

工作#|状态|材料

17001 O 1
17001 O 2
17001 S 3
17001 O 4
17001 C 5
17001 C 6
17002 S 1
17002 O 2
17002 O 3
17002 C 4
17002 C 5

我想要实现的是在我的报告中为每个列出状态的工作设置一行。我需要评估每项工作的所有行,如果有一个带有“O”的行,则将该工作列为“未排序”,如果没有找到该工作的“O”记录,则查找“S”,如果找到则将工作列为如果没有找到“O”或“S”记录,则“已订购”查找“C”,如果找到,则将作业列为“已接收”。我在报告中将以下公式设置为字段。

如果 isNull ({Material_Req.Status})
那么“未订购”
ELSE 如果 {Material_Req.Status} = “O”
那么“未订购”
ELSE 如果 {Material_Req.Status} = “S”
那么“订购” ELSE 如果 {Material_Req.状态} =“C”
然后“收到”

我在组页脚上有这个字段,但是当存在“O”或“S”记录时它返回“已接收”。如果每个作业只有一条记录,它会完美运行,但当每个作业有多个记录时,它就不行了。

任何帮助,将不胜感激。

0 投票
1 回答
49 浏览

crystal-reports - ALL 的参数选择

我必须在我的参数中为“ALL”包含一个值 0。该表中的任何位置都没有值 0,并且它始终返回 0 个结果。所有其他值都返回正确的结果。我该如何配置?

在此处输入图像描述

0 投票
2 回答
172 浏览

crystal-reports - if 语句和拆分函数

我的备忘录行看起来像这样:

或者

我需要它返回之前的所有内容(|如果有的话),或者如果没有|. 现在我有两个公式可以给出之前的所有内容,|或者如果没有|

我如何配置它,如果 a|存在,则返回@Memo2,否则返回{table.memo}