crystal-reports - 插入摘要不显示公式字段
问题描述
我正在尝试获取从日期范围计算的总天数。唯一的条件是如果上一个结束日期等于运行记录开始日期,我不需要再次计算那一天。我已经写了下面的函数,但我在插入摘要和运行总计字段中都看不到它。
在互联网上检查了解决方案的数量后,似乎总数仅适用于数字字段,而不适用于常量或其他变量类型。考虑到到目前为止我看到的所有解决方案,我编写了以下函数,但没有成功。
whileprintingrecords;
Global numbervar value :=0;
Datevar prevdate := Previous({MainReport_24172.ENDDATE});
if {MainReport_24172.ENDDATE}= DateValue (9990,12 ,31 ) then
value := value + CurrentDate - {MainReport_24172.BEGINDATE}+1
else if prevdate = {MainReport_24172.BEGINDATE} then
value := value + {MainReport_24172.ENDDATE} - {MainReport_24172.BEGINDATE}
else
value := value + {MainReport_24172.ENDDATE} - {MainReport_24172.BEGINDATE} + 1
01.09.2019 02.09.2019 2 02.09.2019 04.09.2019 2 04.09.2019 04.09.2019 0
它应该打印总天数 - 4
解决方案
创建一个公式来启动全局变量。将公式放在报表标题中。压制它。
Global numbervar value :=0;
Global DateTimevar prevdate := DateValue (9990,12 ,31 );
然后创建另一个公式。这是原始公式的略微更改版本:
//do not set a value here! it just means the vars are being reused
Global numbervar value;
Global DateTimevar prevdate;
if {MainReport_24172.ENDDATE}= DateValue (9990,12 ,31 ) then
value := value + DATEDIFF("d", {MainReport_24172.BEGINDATE}, CurrentDate)+1 //assuming BEGINDATE always <= CurrentDate
else if prevdate = {MainReport_24172.BEGINDATE} then
value := value + DATEDIFF("d", {MainReport_24172.BEGINDATE}, {MainReport_24172.ENDDATE})
else
value := value + DATEDIFF("d", {MainReport_24172.BEGINDATE}, {MainReport_24172.ENDDATE}) + 1;
prevdate := {MainReport_24172.ENDDATE}; //for the next iteration
value;
这样,如果您将第二个公式放在报表页脚中,它将打印总天数。
如果您需要按某些标准进行分组,我相信您将不得不在组标题中重置全局变量。所以,第一个公式会去那里。第二个公式将在组页脚中。
推荐阅读
- ruby-on-rails - 如何使用 s3-select 获取 s3 json 文件中子对象的计数?
- python - 无法将 django 静态文件保存到 AWS S3
- mysql - 不可接受 在此服务器上找不到所请求资源的适当表示。此错误是由 Mod_Security 生成的
- sql - 如何获取 Hive 中字符串使用的文本字节?
- java - 这段代码是某种命令模式吗?
- perl - 在 Perl 中运行外部程序而不同时输出
- python - Django:保存后信号 TransactionManagementError
- laravel - 在 twillio authy 中设置自定义发件人 ID
- flutter - 在 iOS 构建上运行 Flutter
- amazon-s3 - 当访问密钥无权列出存储桶时,通过 WinSCP 命令行连接到 Amazon S3 失败