テーブル行選択のランダム化

PeopleSoft のページには、検索結果の一覧などのテーブルが含まれることがあります。このようなテーブルの項目をクリックすると、ICAction フィールドが #ICRowX (ここで、X は選択した行を表す番号を表します) に設定されたフォームを返します。

例:テーブル項目の選択時に送信されたフォーム

dclform
  MAIN003:
    "ICType" := "" <USE_HTML_VAL> ,
    "ICElementNum" := "" <USE_HTML_VAL> ,
    "ICStateNum" := "" <USE_HTML_VAL> ,
   	"ICAction" := "#ICRow9", // hidden, changed(!)
	   "ICXPos" := "" <USE_HTML_VAL> ,
	   "ICYPos" := "" <USE_HTML_VAL> ,
	   "ICFocus" := "" <USE_HTML_VAL> ,
	   "ICChanged" := "" <USE_HTML_VAL> ,
// ...

このようなフォームを正確にランダム化またはカスタマイズするには、テーブル行の数を決定する必要があります。

これを支援するために 4 つの関数があります。
  • GetMaxRowNr は、最大の有効な行番号を返します (たとえば、47 行あるテーブルでは、行番号は 0 ベースであるため、最大の有効な行番号は 46 になります)。現在のページにテーブルが含まれていない場合は、-1 を返します。
  • GetRowCount は、現在のページの行数を返します。現在のページにテーブルが含まれていない場合は、0 を返します。
  • GetRndRowStr は、有効なランダム行文字列を返します。
  • FindICRow(sStringToFind : string) : string は、指定したテキストを含む最初の行の行文字列を返します。

以下の例では、GetRndRowStr 関数を使用して、テーブルの項目の選択をランダム化しています。

例:テーブル項目の選択のランダム化

dclform
  MAIN003:
// ..
    "ICStateNum" := "" <USE_HTML_VAL> ,
    "ICAction" := GetRndRowStr(),
    "ICXPos" := "" <USE_HTML_VAL> ,
// ...