1

使用 Crystal Reports 2011 引用视图

我的公式写成“公式字段”

@mySelection

IF {V_JOB.TASK} LIKE "*IN"
AND {V_JOB.CLOSED} = "Y" 
AND {V_JOB.DATE} >= {?FrDate} 
AND {V_JOB.DATE} <= {?ToDate} 
THEN {V_JOB.JOB} ELSE "FALSE"

我的记录选择写在“记录选择公式”中

{V_JOB.LMO} = 'L' AND
{@mySelection}

此视图包含几个相关字段。为了使我的记录选择视图,我想显示所有等于 .JOB 中的字符串的记录,当 .TASK 中的字符串像“*IN”和字段 .DATE = ?myDateRange 和字段 .CLOSED = 'Y'

所以我写了方程来做到这一点,但是只有当 TASK、DATE、CLOSED 为真时,显示的记录才是行 JOB。但是我有多行相同的作业,其中 TASK,DATE,CLOSED 是假的,我也想看到。

因此,如果 Job A 有 30 条记录,并且其中只有 1 条记录的 @mySelection 为“true”,那么即使其他 29 条记录为“false”,我也想选择所有 30 条记录。它的编写方式仅显示 1 个真实记录,而不显示其他 29 个。

任何人都可以就我做错的事情提供一些帮助吗?是否有“全部显示”命令,或者我可以将“真实”作业保存在一个数组中,然后将该数组引用为我的记录选择?

4

3 回答 3

0

我能够使用子报告来记录选择并使用主报告中的参数引用来完成此操作

{V_JOB.LMO} = 'L' and
{V_JOB.JOB} = {?Pm-V_JOB_OPERATIONS.JOB}

然后我创建了一个主报告并将一个参数链接到子报告中的 Job.Job 并在主报告中为我的条件进行了记录选择。

{V_JOB.TASK} LIKE "*IN"
{V_JOB.CLOSED} = "Y" 
{V_JOB.DATE} >= {?FrDate} 
{V_JOB.DATE} <= {?ToDate} 

然后我将子报告放在详细信息部分,但如果 Job.Job 有多个记录满足我的选择,则会产生重复记录问题。因此,为了解决这个问题,我为 Job.Job 创建了一个组,并将子报告放在组标题中并隐藏了详细信息。

我不确定这是最有效地利用 CPU 能力还是在 CR 中进行编程的最佳方式,但它给了我所需的正确结果,并且相对于数据库的大小而言相对较快。

于 2013-09-12T13:32:28.733 回答
0

你在哪里输入你的公式中的水晶?这非常重要。

您应该能够通过在报告的详细信息部分中使用条件抑制来实现您想要的。像这样的东西...

//Untested//
IF {V_JOB.TASK} LIKE "*IN"
AND {V_JOB.CLOSED} = "Y" 
AND {V_JOB.DATE} >= {?FrDate} 
AND {V_JOB.DATE} <= {?ToDate} 
THEN False ELSE True

这将抑制不等于上述条件的结果。

我发现你的问题有点不清楚,所以这个答案可能不适合你的需求,但希望它是朝着正确方向的推动。

于 2013-09-10T15:41:17.620 回答
-1

您的记录选择论坛应该是这样的。

{V_JOB.LMO} = 'L' AND
{V_JOB.JOB}

现在您在 CR 中拥有所有记录。

使用以下公式作为显示记录的字段的抑制选项。

@Supress

IF {V_JOB.TASK} LIKE "*IN"
AND {V_JOB.CLOSED} = "Y" 
AND {V_JOB.DATE} >= {?FrDate} 
AND {V_JOB.DATE} <= {?ToDate} 
THEN true ELSE false

如果您的条件为真,则将显示所有记录,否则将显示所有记录。

我建议您不要在记录选择公式中应用这些类型的条件。

于 2013-09-11T08:46:14.677 回答