Crystal reports Crystal report subreport在子报表中未返回任何记录时显示可选文本

Crystal reports Crystal report subreport在子报表中未返回任何记录时显示可选文本,crystal-reports,Crystal Reports,当子报表中没有返回记录时,如何显示可选文本 e、 g.如果子报表中没有返回记录,我想显示“-” 谢谢这是一种方法。创建一个共享变量,用于跟踪子报表的行计数,如果该计数为零,则显示一个文本字段 从共享字段的内存中可以看到如下内容。。。使用此代码创建一个公式字段,然后将该公式放在报表的某个位置。您可以将其隐藏,使其不可见 shared numberVar rowcount := 0; 将共享变量设置为子报表中的行数。执行相同的操作,在子报告中创建公式字段,但如下所示: shared numbe

当子报表中没有返回记录时,如何显示可选文本

e、 g.如果子报表中没有返回记录,我想显示“-”
谢谢

这是一种方法。创建一个共享变量,用于跟踪子报表的行计数,如果该计数为零,则显示一个文本字段

从共享字段的内存中可以看到如下内容。。。使用此代码创建一个公式字段,然后将该公式放在报表的某个位置。您可以将其隐藏,使其不可见

 shared numberVar rowcount := 0;
将共享变量设置为子报表中的行数。执行相同的操作,在子报告中创建公式字段,但如下所示:

 shared numberVar rowcount := <number of rows>;
在获取行数的不同方法上都有代码

然后在主报告上创建一个包含-的文本字段,并在共享变量大于0时将其抑制。如果需要,还可以右键单击子报表并将其设置为“空白时抑制”


最后,确保并将文本字段(使用suppress函数)放在子报告下面,因为Crystal在尝试之后才知道子报告中有多少记录。水晶那样很有趣。

这是一种方法。创建一个共享变量,用于跟踪子报表的行计数,如果该计数为零,则显示一个文本字段

从共享字段的内存中可以看到如下内容。。。使用此代码创建一个公式字段,然后将该公式放在报表的某个位置。您可以将其隐藏,使其不可见

 shared numberVar rowcount := 0;
将共享变量设置为子报表中的行数。执行相同的操作,在子报告中创建公式字段,但如下所示:

 shared numberVar rowcount := <number of rows>;
在获取行数的不同方法上都有代码

然后在主报告上创建一个包含-的文本字段,并在共享变量大于0时将其抑制。如果需要,还可以右键单击子报表并将其设置为“空白时抑制”


最后,确保并将文本字段(使用suppress函数)放在子报告下面,因为Crystal在尝试之后才知道子报告中有多少记录。Crystal那样很有趣。

假设您希望-出现在子报表中,将其放在子报表的“报表页眉”或“报表页脚”部分中,并根据是否希望显示该部分来设置文本项或部分的可见性,而不管返回多少条记录,这些记录都会根据以下公式有条件地被抑制:

Count ({Table.Field})>0

假设希望-显示在子报表中,请将其放在子报表的“报表页眉”或“报表页脚”部分,并根据是否希望显示该部分来设置文本项或部分的可见性,而不管返回多少条记录,都会根据以下公式有条件地被抑制:

Count ({Table.Field})>0

请参见

请参见

您的报告中需要两个详细信息部分。在1中,输入您有记录时想要显示的内容。右键单击同一节并选择“节专家…”。。。。选中“抑制空白部分”复选框,以便在没有显示内容时抑制此部分使用的空间。在“其他详细信息”部分中,添加一个公式,用于打印没有记录时要显示的内容。在您的示例中,这将是-。创建另一个计算记录的公式,并将其命名为RecordCount

WhileReadingRecords;

NumberVar RecordCount := RecordCount + 1;
将此公式放置在报告的“详细信息”部分,然后将其隐藏。把它放在哪个细节部分并不重要。最后,右键单击没有记录时将显示的同一节,选择“节专家…”。。。。单击“禁止向下搜索”的“公式”按钮并添加此公式

Not Isnull ({@RecordCount})
您可以看到,您只是在检查公式本身是否为null,因此公式中的代码并不那么重要,但我想让它变得有用,以防我想在报告的其他地方使用它


现在,当您有记录时,第二个详细信息部分被抑制,第一个详细信息部分显示您的数据。当您没有记录时,它将被反转,并显示第二个详细信息部分,而第一个详细信息部分将被抑制。

您的报告中需要两个详细信息部分。在1中,输入您有记录时想要显示的内容。右键单击同一节并选择“节专家…”。。。。选中“抑制空白部分”复选框,以便在没有显示内容时抑制此部分使用的空间。在“其他详细信息”部分中,添加一个公式,用于打印没有记录时要显示的内容。在您的示例中,这将是-。创建另一个计算记录的公式,并将其命名为RecordCount

WhileReadingRecords;

NumberVar RecordCount := RecordCount + 1;
将此公式放置在报告的“详细信息”部分,然后将其隐藏。把它放在哪个细节部分并不重要。最后,右键单击没有记录时将显示的同一节,选择“节专家…”。。。。点击 “禁止向下搜索”的“公式”按钮并添加此公式

Not Isnull ({@RecordCount})
您可以看到,您只是在检查公式本身是否为null,因此公式中的代码并不那么重要,但我想让它变得有用,以防我想在报告的其他地方使用它


现在,当您有记录时,第二个详细信息部分被抑制,第一个详细信息部分显示您的数据。当您没有记录时,它会反转,第二个详细信息部分会显示,而第一个详细信息部分会被抑制。

我建议您最好的方法是使用crystal reports,从您想要显示的问题中找到解决方案-当没有数据时,答案如下:

首先:1在子报表中创建一个新公式,并使用编辑器编写以下公式: 共享stringvar-myvar; 如果isnull{Id\u colounm\u name},则myvar:=- else myvar:=+ 注意:这里Id\u coloumn\u name是行成员,它可以决定记录是否为空

第二个2: 保存公式并创建新的页眉部分并将其抑制,然后将此公式添加到新创建和抑制的部分

第三个3: 转到主报告并创建新公式,使用编辑器编写以下公式: 共享stringvar disp; 保存并关闭公式编辑器

第四点: 现在在crystal报告所在的部分下方插入一个部分。 现在,右键单击该部分,转到section expert 并在“抑制”按钮后选择“公式”图标,然后添加以下公式: 共享stringvar-myvar; 如果是myvar,则为true 否则错误 保存并关闭公式,并在“抑制空白”部分之后选择图标,然后添加以下公式: 共享stringvar-myvar; 如果myvar=+则为true 保存并关闭公式,现在将在主报告中创建的公式添加到新创建的部分。保存它

第五,第五: 右键单击子报表并选择“格式对象”,然后选择“子报表”选项卡并选中“禁用空白子报表” 然后右键单击子报告所在的部分,然后转到“部分专家”,然后选中“空白部分”

这就是你所能做的,现在运行报告并检查它是否工作

注:包含子报表的部分不应包含其他字段的任何其他文本,必须禁止包含子报表中公式的部分,并且不必禁止包含主报表中公式的部分

希望能有帮助 谢谢和问候
Srikanth

我建议您最好的方法是使用crystal reports,从您想要显示的问题中找到解决方案-当没有数据时,请回答:

首先:1在子报表中创建一个新公式,并使用编辑器编写以下公式: 共享stringvar-myvar; 如果isnull{Id\u colounm\u name},则myvar:=- else myvar:=+ 注意:这里Id\u coloumn\u name是行成员,它可以决定记录是否为空

第二个2: 保存公式并创建新的页眉部分并将其抑制,然后将此公式添加到新创建和抑制的部分

第三个3: 转到主报告并创建新公式,使用编辑器编写以下公式: 共享stringvar disp; 保存并关闭公式编辑器

第四点: 现在在crystal报告所在的部分下方插入一个部分。 现在,右键单击该部分,转到section expert 并在“抑制”按钮后选择“公式”图标,然后添加以下公式: 共享stringvar-myvar; 如果是myvar,则为true 否则错误 保存并关闭公式,并在“抑制空白”部分之后选择图标,然后添加以下公式: 共享stringvar-myvar; 如果myvar=+则为true 保存并关闭公式,现在将在主报告中创建的公式添加到新创建的部分。保存它

第五,第五: 右键单击子报表并选择“格式对象”,然后选择“子报表”选项卡并选中“禁用空白子报表” 然后右键单击子报告所在的部分,然后转到“部分专家”,然后选中“空白部分”

这就是你所能做的,现在运行报告并检查它是否工作

注:包含子报表的部分不应包含其他字段的任何其他文本,必须禁止包含子报表中公式的部分,并且不必禁止包含主报表中公式的部分

希望能有帮助 谢谢和问候
Srikanth

此SO链接有另一种方法可以使用共享变量获取子报表中的行数。。。谢谢,因为备选文本用于子报表,并且在该子报表的同一行中有另一个子报表,所以我不能使用共享变量,因为备选文本必须与另一个子报表位于同一行。我最终使用命令来完成这项工作。如果您找到了解决方案,请将其作为答案发布。如果没有-让我们知道你被困在哪里。请点击此链接