Crystal Reports XI数据库中记录的最早数据

时间:2016-05-23 21:03:42

标签: crystal-reports crystal-reports-xi

目前正在处理一个提取帐户设置的报告,这确实需要一些背景故事。

用户可以在帐户上进行设置,但是其他用户可以进入并使用“编辑”操作代码,然后取消先前的设置,创建新的设置,具有不同的付费选项,新帐户设置,真的。我们支付办公室的方式取决于谁拥有原始设置。

我正在制作的报告需要提取设置的原始创建者,但需要提供最新的设置信息。

就像accountNumber,oldUser,oldUserSupervisor,newSetUpDate,newSetUpAmt将是收集的列。

这些列来自一个名为“Setups”的表

当查询表时,如果你没有任何限制,它将显示所有过去的设置和当前,但是有一个非活动标志,isActive =“N”如果它不活动,isActive =“Y”如果它是......

我需要做的是获取原始安装程序用户,然后提取有关新设置的信息并制作如上所列的一行。

我尝试使用变量遍历每条记录,但它总是返回最新信息。

这是我在公式研讨会中使用的变量(我在标题中确实初始化了它们)

Shared DateVar createDate;
Shared BooleanVar countNext;
Shared StringVar previousRehab;
Shared StringVar cUser;

// Checking for the correct create date
If ( countNext = true ) Then
    createDate := {CreateDate}
Else
    createDate := createDate;

// Checking for the correct user
If ( countNext = true ) Then
    cUser := {User}
Else
    cUser := cUser;

//Checking for the correct cancel code
If ( {cancelReason} = "EDIT" ) Then
    countNext := False
Else
    countNext := True;

应该扫描每条记录,如果匹配则保存信息,然后停止搜索并打印记录。目前,它始终显示最新信息,而不会触及过去。

1 个答案:

答案 0 :(得分:1)

这样你就会陷入困境。

按照以下流程:

假设帐户在新旧方面很常见。

  1. 使用account number

  2. 创建群组
  3. 将这些列oldUser, oldUserSupervisor, newSetUpDate, newSetUpAmt放在详细信息部分。

  4. 对于每一列,创建一个数组来存储所有数据并在组头重置数组。请遵循以下流程。

  5. 在组标题中创建公式@Reset

    Shared Stringvar Array olduser="";
    Shared Stringvar Array oldUserSupervisor="";
    Shared Srtingvar array newSetUpDate="";
    Shared Stringvar Array newSetUpAmt="";
    

    现在详细信息为4列创建4个不同的公式,并写如下。我正在显示一列扩展到4列的日期和金额确保在存储到数组之前转换为字符串:

    创建公式@storeolduser

    olduser:=olduser+databasefield;
    1
    

    像这样为4列创建4个公式

    在报表页脚中提取全部4个数组的第一个元素作为旧信息,数组的最后一个元素具有最新信息

    olduser[1] //will give first user access
    olduser[Ubound[olduser]] //will give last user accessed
    

    提取组页脚中的所有内容并根据您的要求显示