2

我有一个包含父记录和几个子记录的页面。有一个字段(级别 1)是一个复选框,它是“最终草案”字段 - 选中此字段后,无法进行更多更改(即使在更正模式下);必须插入新行/effdt。孩子们的记录都在2级。现在,我拥有的是:

&RS7 = GetRowset(Scroll.AVZ_JD_DTL_TBL);
&final_draft = &RS7.GetRow(1).getrecord(Record.AVZ_JD_DTL_TBL).getfield     (Field.FINAL_VALUE).Value;

If &final_draft = "Y" Then
  Page.AVZ_JD_DTL_PG.DisplayOnly = True;
 Else
  Page.AVZ_JD_DTL_PG.DisplayOnly = False;
 End-If;

因此,假设我处于校正模式,并且我有 3 行 - effdts 2012 年 1 月 1 日、2012 年 5 月 1 日和 2012 年 6 月 1 日,勾选了日期为 2012 年 5 月 1 日的行,当我在生效日期“分页”/“滚动”时,我希望 2012 年 1 月 1 日的行是可编辑的,2012 年 5 月 1 日的行是只读的,然后是 2012 年 6 月 1 日的行可编辑。

我想也许我需要单独“禁用”每个行集,而不是整个页面。我只是在研究行集/滚动,在程序的早期我正在做一些操作:

&RS1 = GetLevel0().GetRow(1).GetRowset(Scroll.AVZ_JD_DTL_TBL).GetRow(1).GetRowset(Scroll.AVZ_JD_RESP_TBL); &RS2 = GetLevel0().GetRow(1).GetRowset(Scroll.AVZ_JD_DTL_TBL).GetRow(1).GetRowset(Scroll.AVZ_JD_EXPR_TBL);

&RS1.Sort(AVZ_JD_RESP_TBL.ORDER_SEQ, "A"); &RS2.Sort(AVZ_JD_EXPR_TBL.ORDER_SEQ, "A");

问题是,我如何知道我当前正在查看哪一行,然后获取该行的 FINAL_VALUE 字段,然后为该 effdt 灰色/禁用页面上的所有内容?(然后,当然,如果您通过该 effdt 到没有选中该复选框的那个,则所有内容都需要再次可编辑)。

谢谢

4

1 回答 1

0

您可以循环遍历 1 级 scolls 以查找复选框,然后如果找到则循环遍历 2 级滚动,然后将行的Active属性设置为 false。

我没有可用于测试此代码的 PeopleSoft 系统,但它会是这样的:

&LEVEL0 = your level 0 record
&LEVEL1 = &LEVEL0.GetRowset(Scroll.AVZ_JD_DTL_TBL); /* handle to level 1 */
For &I = 1 To &LEVEL1.ActiveRowCount
    if &LEVEL1(&I).final_draft = "Y" then   /* check box is on */
        &LEVEL2 = &LEVEL0(1).&LEVEL1(&I).GetRowset(Scroll.AVZ_JD_EXPR_TBL);
        For &J = 1 to &LEVEL2.ActiveRowCount
            &LEVEL0(1).&LEVEL1(&I).&LEVEL2(&J).AVZ_JD_EXPR_TBL.Active = "False";
        End-For;
    End-If;
End-For;

假设您的 1 级记录是AVZ_JD_DTL_TBL并且您的 2级记录是AVZ_JD_EXPR_TBL。请仔细检查 PeopleBooks 的确切语法,但我认为这是正确的。

于 2012-06-10T14:56:37.260 回答