にて以前解説した複数フィールド、複数行のデータを取得する 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]
おわりに
データの特性によっては、フィールドや行の区切り文字を工夫しなければなりませんの><。
そのような欠点はございますが、まずまず使いやすい方法と存じます。
以上です。
