繁体   English   中英

Crystal报告语法错误

[英]Crystal reports syntax error

我尝试使用Crystal Reports for dot net制作一个简单的报告。 但是它每次都返回错误的值“ 5”。 正确的值为“ 3”。 这是我的结果。

   Desktop 
   Desktop
   Laptop
   Laptop
   Laptop
Total Laptop 5

下面是我使用的代码。

Local numberVar cnt := 0:
Local stringVar stv  := {Table_1.Property};
Local numberVar strLen := Count({Table_1.Property});
Local numberVar i;

For i := 1 to strLen do
(
   If stv = “Laptop”
   Then cnt := cnt + 1
Else cnt := cnt + 0
);
cnt;

该代码在哪里出错? 谢谢:)

假设记录打印在详细信息部分中,并且总计公式位于页脚部分,您将得到错误的结果,因为在for循环中,由于页脚在在详细信息部分之后呈现。

作为解决方案,您可以使用以下方法之一:

  1. 用2个公式求解。

    • 创建一个名为ItemCountDetails的公式,并添加以下代码。

       WhilePrintingRecords; Shared NumberVar Cnt; if RecordNumber = 1 then Cnt:= 0; if {Table_1.Property} = "Laptop" then Cnt:= Cnt + 1; 
    • 将公式字段拖放到详细信息部分的某个位置(将在其中打印记录),然后通过右键单击字段->格式对象->通用选项卡->并选中抑制复选框来抑制它。

    • 创建另一个名为ItemCountFooter的公式,并添加以下代码。

       Shared NumberVar Cnt; 
    • 将新的公式字段拖放到页脚部分。

  2. 摘要和分组的解决方案。

    • 在部分内单击鼠标右键,然后选择“摘要”。
    • 从“选择要汇总的字段”中选择表_1下的“属性”。
    • 从“计算此摘要”中选择“计数”
    • 单击插入组,然后从公共选项卡的第一个ComboBox中选择“属性”。
    • 单击确定关闭对话框。 在报告上,您将看到一个组名称字段和一个计数字段。
    • 右键单击GroupHeaderSection1栏,然后选择“抑制”。
    • 右键单击“表_1。属性的计数”字段->设置对象格式->通用选项卡->单击抑制复选框右侧的x + 2按钮,并在其中添加以下代码

       if GroupName({Table_1.Property}) <> "Laptop" then true else false 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM