にて以前解説した複数フィールド、複数行のデータを取得する ExecuteSQL の方法の具体的なサンプルを紹介いたします。
思い出しながら書いておりますので、そのまま動かないかもしれませんので、ロジックの組み立て部分を参考にしていただければと存じます。
環境
- Windows7 Professional 32bit
- FileMaker Pro 14 Advanced
事前準備
以下のカスタム関数を定義しておきます♪
FileMaker サンプルコード
変数を設定 [$ymd; 値: "2016/05/09"] スクリプト実行 [「売上テーブルの料金合計」; 引数: $ymd] 変数を設定 [$ret; 値: Get(スクリプトの結果)] # 取得件数 変数を設定 [$ret_cnt; 値: PatternCount ($ret ; ¶) + 1] # 結果をそのまま表示 カスタムダイアログを表示 ["結果をそのまま表示"; "$ret: " & $ret] # 結果をループして各要素を取得 変数を設定 [$i; 値: 0] Loop 変数を設定 [$i; 値: $i + 1] Exit Loop If [$i > $ret_cnt] # 行データを取得 変数を設定 [$row; 値: GetArg ( $ret; "¶" ; $i)] # 行データから各フィールドを取得 変数を設定 [$shop; 値: GetArg ( $row; "|" ; 1)] 変数を設定 [$sum; 値: GetArg ( $row; "|" ; 2)] # 取得した各フィールドを表示 カスタムダイアログを表示 ["取得した各フィールドを表示"; "店: " & $shop & ¶ & "合計金額: " & $sum] End Loop
################################################## # 売上テーブル.売上額の店ごとの合計のリストを返します。 # 引数: 年月日 # 戻り値: フィールドを "|" で、行データを "¶" で区切ったリスト ################################################## 変数を設定 [$ymd; 値: GetValue(Get(スクリプト引数)); 1] 変数を設定 [$ret; 値: ExecuteSQL (" SELECT ¥"店¥", ¥"SUM(売上)¥" FROM ¥"売上¥" WHERE ¥"売上日¥" = ? GROUP BY ¥"店¥" "; "|"; "¶"; "$ymd") ] 現在のスクリプト終了[結果: $ret]
おわりに
データの特性によっては、フィールドや行の区切り文字を工夫しなければなりませんの><。
そのような欠点はございますが、まずまず使いやすい方法と存じます。
以上です。