我想突出显示基于先前/优先值的行。请参阅随附的图像以获取示例数据 Image of Crystal report sample
如果任何事件或任何事件之前的事件具有相同的Sch时间但ETA不同,则我想突出显示该行。在我的案例中,“ 1温斯顿爵士”将是突出显示的行
if({@ Activity})='P / U'和({@Sch_Time})=上一个({@Sch_Time}) 和({@Addr})<>上一个({@Addr})
和({@ETATime})>前一个({@ETATime}),然后crRed else crNoColor
答案 0 :(得分:0)
一个可能的选择是使用共享或全局变量。如果您对Crystal Report中的变量不熟悉,请Here is a link to a tutorial。
通过使用变量,您可以存储符合条件的最后一条记录中的数据。例如,以下公式将存储上一次{@Sch_Time}
的{{1}}和{@ETATime}
的值。
{@Activity} = "P/U"
您可以在“公式字段”中使用此公式,然后将其放置在报告中打印每条记录的部分。
后面的部分可以使用以下公式控制背景色以突出显示记录。
Shared StringVar schTime;
Shared StringVar etaTime;
Shared StringVar address;
If {@Activity} = "P/U" Then
schTime := {@Sch_Time}
etaTime := {@ETATime}
address := {@Addr}
Else
schTime := schTime
etaTime := etaTime
address := {@Addr};
这种方法有些细微之处可能对您来说是有问题的。例如,它只能存储最后一条记录Shared StringVar schTime;
Shared StringVar etaTime;
Shared StringVar address;
If {@Activity} = "P/U" and {@Sch_Time} = schTime and {@Addr} <> address and {@ETATime} > etaTime
then
crRed
else
crNoColor;
的变量值。一旦遇到一条新记录(该语句为true),变量的值就会使用新记录中的值进行更新。
在不了解您的特定要求的情况下,我不能肯定地说这种方法对您有用。我认为这个问题将在Crystal Report之外以及从中检索数据的数据库中更容易解决。例如,您可以创建一个存储过程,该存储过程选择数据并使用SQL创建包含布尔值的列,以指示是否应突出显示每一行。
我不确定我还能提供多少帮助。最好按照我的建议尝试一些事情,或者就该方法提出一个新的问题,或者等待别人是否有更好的主意。