投稿者 okigaru | 2012/09/14

ExecuteSQL

FileMaker12からの新しい関数です
FileMaker社のWebセミナーを参考に使ってみました

親テーブルと子テーブルのリレーションがあって
親テーブルのPKフィールドと子テーブルのFKフィールドでリレーション
良くありがちな普通のリレーションです
子テーブルに
日付始フィールドと日付終フィールド
この期間をリストにする日付Listフィールド(カスタム関数で)
グローバルフィールドでSQL文とパラメータ(2つ)を格納する
指定期間で対象の親テーブルのリストを作る

フィールドSQL文に
SELECT DISTINCT “FK”
FROM “子テーブルTO名”
WHERE “日付List” BETWEEN ? AND ?

フィールドパラメータ1に
指定期間の始めの日付

フィールドパラメータ2に
指定期間の終わりの日付

スクリプトで変数に入れる
$$PK
ExecuteSQL ( 親テーブル::SQL文 ; “” ; “¶” ; 親テーブル::パラメータ1 ; 親テーブル::パラメータ2 )

これで重複しない FK のリストが出来ます

DISTINCT これが重複を纏めてくれる呪文

SUMやGROUP BYが使えるそうなので引き続きお勉強

※追記2012/09/17
BETWEEN を使うとフィールドパラメータ1とフィールドパラメータ2の両方に該当しないと対象になりません
例えば、日付Listに
2012/09/01
2012/09/02

2012/09/29
2012/09/30
と改行でつながったフィールドに
パラメータ1が2012/09/29
パラメータ1が2012/10/02
これだと対象になりません
WHERE “日付List” LIKE ‘%2012/09/29%’ or “日付List” LIKE ‘%2012/09/30%’ or “日付List” LIKE ‘%2012/10/01%’ or “日付List” LIKE ‘%2012/10/02%’
orが沢山に成ってしまうので検索した方が良いかも?

広告

カテゴリー

%d人のブロガーが「いいね」をつけました。