Crystal reports 如何使用DateDiff()通过分组而不仅仅是整个数据集实现差异?

Crystal reports 如何使用DateDiff()通过分组而不仅仅是整个数据集实现差异?,crystal-reports,global-variables,Crystal Reports,Global Variables,我将数据按提供者分组,然后按patientID分组,我想查找患者最后一次与诊所“互动”的时间,但当我使用datediff时,它似乎给出了整个数据集的最新日期,而不是按组 我的尝试如下: @TimesInclastInteraction\u初始化 global numbervar interaction := 0; if {Ticket.PatientID} <> previous({Ticket.PatientID}) then interaction else interacti

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

我的尝试如下:

@TimesInclastInteraction\u初始化

global numbervar interaction := 0; 
if {Ticket.PatientID} <> previous({Ticket.PatientID}) then interaction
else interaction :=0;
我尝试了几个不同的日期字段,但总是得到相同的结果,即每个分组返回的值相同。这让我觉得我没有正确地将交互设置为变量。我也尝试过局部变量和全局变量,但都没有用

作为一个小插曲,我并不真正理解局部变量声明和全局变量声明之间的区别(我通常只使用全局变量声明就可以了),我希望能够解释它们各自的用法,就像对我当前的问题有任何帮助一样


提前谢谢

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

在您的情况下,您根本不需要使用任何变量,实际上只需要一个公式即可完成工作:

DateDiff(“d”,最大值({Ticket.TicketDate},{Ticket.PatientID}),CurrentDateTime)


该键是传递给
max()
函数的第二个参数;它指定您只查找特定PatientID的最大日期。如果没有第二个参数,它将为您提供整个报告的最大日期。不过,您应该注意,作为第二个参数传递的值必须是您在报告中作为组使用的字段。

谢谢!非常有帮助,这是在没有安装帮助功能的情况下发生的。@BrinnRiordan如果没有帮助文件,我建议您使用它:@BrinnRiordan如果这回答了您的问题,请不要忘记投票和/或将其标记为答案。谢谢
global numbervar interaction;
interaction := DateDiff("d",maximum({Ticket.TicketDate}),CurrentDateTime);