BLOG

FileMakerを使った多次元配列の実現方法 Part2 可変変数の利用

(2019年3月28日)
カテゴリ: プログラム
 

皆様、ご無沙汰しております。
開発部・プログラマの新田です。

今回は、前回の記事の最後に記載していた可変変数の実現方法が判明しましたので
それについての説明とスクリプトの修正を行います。

前回の記事はこちら↓
https://www.merges.co.jp/archives/1223

さっそく可変変数について説明を行います。
それは…スクリプトステップの「フィールドを名前で設定」を使用するだけです!
このスクリプトステップが存在することを知りませんでした!

これを踏まえたうえで前回のスクリプトを修正します。
(※40~55行目が修正された内容となります。)

#社員のシフト
ウインドウの固定
レイアウト切り替え[「Dシフト明細」(Dシフト明細); アニメーション:なし]
検索モードに切り替え[一時停止:オフ]

#前月のシフトCDを使ってシフト明細を絞る
フィールド設定[Dシフト明細::シフトCD; $シフトCD]
エラー処理[オン]
検索実行[]
If[Get ( 最終エラー ) > 0]
   現在のスクリプト終了 [テキスト結果:]
End If

レコード/検索条件/ページへ移動 [最初の]
変数を設定 [$対象レコード数; 値: Get(対象レコード数)]
変数を設定 [$要素数; 値: 0]
Loop
   #社員CDを記録
   変数を設定 [$社員CD[$要素数]; 値: Dシフト明細::社員CD]
   変数を設定 [$フィールドの数; 値: 0]
   フィールドへ移動 [Dシフト明細::シフト状況1]
   Loop
      #前月のシフトを記録
      変数を設定 [$シフト[$要素数]; 値: $シフト[$要素数] & "❡" & Get ( アクティブフィールド内容 )]
      変数を設定 [$フィールドの数; 値: $フィールドの数 + 1]
      次のフィールドへ移動
      Exit Loop If [$フィールドの数 > 31]
   End Loop

   #先頭の改行を取り除く
   変数を設定 [$シフト[$要素数]; 値: Replace ( $シフト[$要素数] ; 1 ; 1 ; "" )]

   変数を設定 [$要素数; 値: $要素数 + 1]
   レコード/検索条件/ページへ移動 [次の; 最後まできたら終了:オフ]
   Exit Loop If [$対象レコード数 < $要素数]
End Loop

#各社員のシフト値を登録する
#変数:末日にはその月の末日が入っています
Loop
   #社員CDを登録
   フィールド設定[Dシフト明細::社員CD; $社員CD[$要素数]]

   #シフト値を登録
   変数を設定[$日にち; 1]
   Loop
      変数を設定[$フィールド名; 値: Get(レイアウトテーブル名) & "::シフト状況" & $日にち]
      フィールドを名前で設定[$フィールド名; GetValue ( $シフト[$要素数] ; $日にち )]
      変数を設定[$日にち; $日にち + 1]
      Exit Loop If [$末日 < $日にち]
   End Loop

   変数を設定 [$要素数; 値: $要素数 + 1]   
   Exit Loop If [$対象レコード数 < $要素数]
End Loop

これでスクリプトもすっきりしましたね!
31個も「フィールド設定」を使う必要ありませんでした...過去の分を修正しないといけません(´;ω;`)

それではまた!

新田(プログラマー)
Skill:php / JAVA / javascript / Postgre SQL  Like:絵を描くこと、ピアノ