カテゴリー
Apple

【FileMaker Pro 14 Advanced】ExecuteSQL で複数フィールドの複数行データを取り出す具体的なスクリプト例

にて以前解説した複数フィールド、複数行のデータを取得する 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]

おわりに

データの特性によっては、フィールドや行の区切り文字を工夫しなければなりませんの><。

そのような欠点はございますが、まずまず使いやすい方法と存じます。

以上です。

コメントを残す