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;
应该扫描每条记录,如果匹配则保存信息然后停止搜索并打印记录。目前它总是显示最新的信息,不涉及过去。
这样你会陷入困境。
遵循以下流程:
假设新旧帐户通用。
使用account number
创建群组
将这些列 oldUser, oldUserSupervisor, newSetUpDate, newSetUpAmt
放在详细部分。
为每一列创建一个数组来存储所有数据,并在 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
提取所有组页脚并根据您的要求显示
目前正在编写一份报告,该报告会提取帐户的设置,这确实需要一些 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;
应该扫描每条记录,如果匹配则保存信息然后停止搜索并打印记录。目前它总是显示最新的信息,不涉及过去。
这样你会陷入困境。
遵循以下流程:
假设新旧帐户通用。
使用
account number
创建群组
将这些列
oldUser, oldUserSupervisor, newSetUpDate, newSetUpAmt
放在详细部分。为每一列创建一个数组来存储所有数据,并在 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
提取所有组页脚并根据您的要求显示