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 年 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 スクロールをループし、見つかった場合はレベル 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 に答える