ExecuteSQLを使ってみる その1  (FileMaker 12 の関数 )

2012年06月22日 09:29 PM

ファイルメーカーのTips


今回は、ファイルメーカー12(FileMaker 12)で追加された新しい関数であるExecuteSQLについてです。
(これから数回にわたってExecuteSQLについて記載していく予定ですが、このテーマについては約1ヶ月おきの更新となります。
気長にお待ちいただければ…と思います。)

さて。早速ですが、ExecuteSQL関数 とは どのような関数なのでしょうか。
ヘルプを見てみると、『目的』には以下のように記載されています。
指定したテーブルオカレンスに対する SQL クエリーステートメントを FileMaker Pro データベース内で実行します。
SQLを使用してデータを取得できる関数 という感じでしょうか。
ここで注意しなければいけない事は、『指定したテーブルオカレンス』という部分です。
『テーブル』ではなく『テーブルオカレンス(TO)』でなければいけないようです。
(コレについては、「テーブル名を変更してもSQLクエリーは変更する必要がない(テーブル名を変更してもTOは変わらない為)」と考えるか、「Get ( アクティブフィールドテーブル名 )・Get ( レイアウトテーブル名 )でテーブルを動的に取得して動的なSQLクエリーが作成できない」と考えるか難しいところですね。(後者については、TOをテーブル名と同じにすることで可能にはなりますが。))

では、次に『構文』を見てみましょう。
ExecuteSQL ( SQL クエリー; フィールド区切り; 行区切り { ; 引数… } )
引数がたくさんありますが、『説明』を読むと最低限SQLクエリーを指定すれば、大丈夫なようです。
「サンプル」というテーブルから、とりあえず全部のデータを取得したい場合は、以下のようにすると大丈夫そうですが… ExecuteSQL ( “SELECT * FROM サンプル” ; “” ; “” )
…結果は「?」が返ってきてしまいます。
(※『説明』にもありますが、「クエリー解析または実行時にエラーが発生した場合、FileMaker Pro は? を返します。」) これは、「サンプル」という日本語のTO名がエラーの原因になっています。

『日本語のフィールド名、テーブルオカレンス名を使用する場合は、「¥”」でそれらを囲む必要があります』

ですので、以下のようにすると、きちんとデータを取得する事ができるようになります。
ExecuteSQL ( “SELECT * FROM ¥”サンプル¥” ” ; “” ; “” )

2つ目、3つ目の引数が空の文字列ですので、フィールドがコンマ区切り、レコードが改行区切りにされたデータが返ってきます。
【結果の例】
1,サンプルデータ1
2,サンプルデータ2

今回はここまでです。次回はSQLクエリーの中身について記載する予定です。