【FileMaker】ExecuteSQL関数の使い方(3)

2018/12/6

3.ExecuteSQL関数をレコードデータをまとめて持ってくる

便利なので項目ごとにカスタム関数を作ったら

ExecuteSQLカテゴリ ( main::ID_goods )
ExecuteSQL商品コード ( main::ID_goods )
ExecuteSQL単価 ( main::ID_goods )
ExecuteSQL産地 ( main::ID_goods )

とカスタム関数が増え、メンテナンスが大変になってきました。
そこで、JSON機能を使って、カスタム関数は一個で対応する方法を始めました。

(1)レコードをJSON機能でレコード内容を1項目にまとめる

json項目のなかに、JSON関数を使って商品(IDや商品名、カテゴリ、単価)の項目をまとめます

JSONSetElement ( "{}" ; [ "ID_goods" ; ID_goods ; JSONNumber] ; [ "ID_category" ; ID_category ; JSONNumber] ; [ "name" ; name ; name] ; [ "price" ; price ; JSONNumber] ; [ "category" ; category ; JSONString] )

{ "ID_category" : 1, "ID_goods" : 1, "category" : "野菜", "name" : "キャベツ", "price" : 100 }

商品_JSONの項目にレコード内容がすべて入っています。

カテゴリ、商品名。単価は商品_JSONから取り出しています。

(2)ExecuteSQL関数で一括取得、JSON関数で個別取得

〇ExecuteSQL関数でJSONデータを一括で取得する

〇カテゴリ・商品名・金額をJSON関数で個別に取得する

JSONデータからカテゴリデータを取り出す関数

JSONGetElement ( main::商品_json ; “category” )

これで、「野菜」を取り出します。

●結果

項目の追加・変更時の対応が簡単になった!

  • ExecuteSQLのカスタム関数は変更はいらない
  • 変更はテーブルのJSON項目の変更だけ

スクリプトも一行だなって思ったときにそもそもスクリプトはいらないって気が付き(4.テーブルの計算式だけで検索して使う)を始めました。


目次

【FileMaker】ExecuteSQL関数の使い方

  1. ExecuteSQL関数を使ってみる
  2. ExecuteSQL関数をカスタム関数にして使う
  3. ExecuteSQL関数をレコードデータをまとめて持ってくる
  4. テーブルの計算式だけで検索して使う
  5. 日本語対応と繰り返し対応