crystal-reports - 我如何使用 DateDiff() 通过分组而不只是整个数据集来给我一个差异?

标签 crystal-reports global-variables

我的数据按提供者分组,然后按患者 ID 分组,我想找到患者最后一次与诊所“互动”的时间,但是当我使用 datediff 时,它似乎给出了整个数据集的最新日期,而不是按组。

我的尝试如下:

@TimeSinceLastInteraction_Initialize

global numbervar interaction := 0; 
if {Ticket.PatientID} <> previous({Ticket.PatientID}) then interaction
else interaction :=0;

此公式放置在患者 ID 的组标题中,以重置每个组的值,并且似乎有效

@TimeSinceLastInteraction
global numbervar interaction;
interaction := DateDiff("d",maximum({Ticket.TicketDate}),CurrentDateTime);

我尝试了几个不同的日期字段,但我总是得到相同的、不需要的结果,其中每个分组返回的值是相同的。这让我觉得我没有正确地将交互设置为变量。我也试过局部变量 vs 全局变量无济于事。

顺便说一句,我不太明白局部变量声明和全局变量声明之间的区别(我通常只使用全局变量),并且希望对它们各自的用途进行解释,就像对我当前问题的任何帮助一样!

提前致谢!

最佳答案

首先,局部变量只能在声明它的一个公式中使用。您不能在其公式之外的任何地方引用它。任何公式都可以引用全局变量(子报表中的公式除外)。

在您的情况下,您根本不需要使用任何变量,您实际上只需要一个公式即可完成工作:
DateDiff("d",maximum({Ticket.TicketDate},{Ticket.PatientID}),CurrentDateTime)
关键是您传递给 Maximum() 的第二个参数功能;它指定您只查找该特定 PatientID 的最大日期。如果没有第二个参数,它将为您提供整个报告的最大日期。但是,您应该注意,作为第二个参数传递的值必须是您在报表中用作组的字段。

关于crystal-reports - 我如何使用 DateDiff() 通过分组而不只是整个数据集来给我一个差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240092/

相关文章:

c# - Crystal Reports - 如果包含图表,则数据重复

c# - 如何减小 Crystal 报表工具栏的宽度?

c - 全局变量的“初始化程序不是常量”?

c++ - 在 C++ DLL 中使用 C 风格导出 API 之间公共(public)类的方法

c# - 在 Windows 窗体中加载没有 CrystalReportViewer 的 Crystal 报表模板

asp.net-mvc - 删除打印为 PDF 的选项

crystal-reports - 检测 x86/x64 并安装正确的 .msi

c++ - 全局范围 LPWSTR 在更改后恢复

php - 函数外的变量是全局变量吗?

linux - Linux Mint 的 Grails 问题