Crystal 报告 XI 数据库中记录的最早数据

Crystal Reports XI Earliest Data for the Record in the Database

目前正在编写一份报告,该报告会提取帐户的设置,这确实需要一些 back-story。

一个用户可以在一个帐户上进行设置,但另一个用户可以进入并使用 "EDIT" 操作代码,然后取消之前的设置,创建一个新的,具有不同的支付选项,设置中的新帐户,真的。我们支付办公室费用的方式取决于拥有原始设置的人。

我正在做的报告需要拉取设置的原始创建者,但具有最新的设置信息。

这就像 accountNumber、oldUser、oldUserSupervisor、newSetUpDate、newSetUpAmt 是收集的列。

这些专栏来自一个名为 "Setups"

的 table

当查询 table 时,如果你没有任何限制,它会显示所有过去的设置和当前的设置,但带有一个 inactive 标志,isActive = "N" 如果它是不活动且 isActive = "Y" 如果它是...

我需要做的是获取原始设置用户,然后提取有关新设置的信息,并像上面列出的那样制作一行。

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

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

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. 使用account number

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

  4. 为每一列创建一个数组来存储所有数据,并在 header 组重置该数组。按照下面的流程。

在组 header 中创建公式 @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

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