130619-ExecuteSQL

 FileMakerの新しい関数「ExecuteSQL」を使ってAccessのDlookup関数のような1つのデータを取得する方法を下記に明記します。

FileMakerでSQL

 FileMakerのVer.12からはExecuteSQL関数というものが追加されました。「ました」と偉そうなことを書いていますが、それ以前のバージョンは知りません(^^ゞ。そのExecuteSQL関数では今までFileMakerで使うことができなかったSQLが使えるようになったということで、FileMakerユーザーの間ではちょっとした話題になっていたようです。

 このExecuteSQLはINSERTやUPDATEなどの更新SQLは使えず、使えるものはSELECT文のみ。今までSQLが使えなかったものに対してSELECT文だけでも使えるようになったのは、大きな進歩かと思います。ただ、このExecuteSQLでSEELCT文を投げても完璧ではないようで、スピードが出ないや取得するデータが扱いにくいなどまだまだ課題は多いようです。

Dlookup

 さて、SELECT文だけとはいえSQLが使えるExecuteSQL関数がまったく使え無いものなのか、というとそうではないと思います。いろいろ使い方はあると思いますが、私はこのExecuteSQL関数を使って1つのテーブルの1つのカラムから1つのデータを取得するには非常に有効なものと思います。AccessでいうところのDlookupDCountなどです。

 たった1つのデータですが、使い道は各所であると思います。例えばあるユーザーの苗字を取得するやグローバルに登録してある値を取得するなど各所でつかます。

 FileMakerの場合、1つのテーブルの1つのカラムから1つのデータを取る処理をするだけで、スクリプトに街とするレイアウトを表示し、検索をしてデータを探し、見つかったデータを取得するというここでは簡単に書きましたがかなり面倒な処理をする必要があります。しかし、ExecuteSQLを使うことによって簡単にデータを取得することができます。

1つのデータを取得

 ではExecuteSQL関数を使ってAccessのDlookupのような1つの値を取得するにはどうすればいいかを明記しておきます。また、せっかくなので、特定のデータのみではなく汎用性のあるFileMakerのDlookupを紹介したいと思います。

 まず、ExecuteSQL関数の説明ですが、これに関しては公式ドキュメントや他のサイトでも紹介していますので割愛します。

 それでは例として「user」テーブルの「name」カラムを「id」を条件にして取得するとします。スクリプトに例えば「変数の設定」を追加し、変数名を「$res」とし、値に

ExecuteSQL(“SELECT name FROM user WHERE id=10”; “;”; “”)

とすれば$resにidが10のnameが入ります。

 ただ、これではidの10は工夫して変更できるようにしても、userテーブルのnameカラムしか取得できません。telカラムを取得するためにはその都度スクリプトを作らなければなりませんよ。

Dlookup作り

 ではこれをDlookupのように任意のテーブルで任意のカラムから任意の条件で値を取得するには、事前に引数を格納する変数を設定を3つ作ります。

$expr(フィールド名)
GetValue ( Get ( スクリプト引数 ) ; 1 )
$domain(テーブル名)
GetValue ( Get ( スクリプト引数 ) ; 2 )
$criteria(抽出条件)
GetValue ( Get ( スクリプト引数 ) ; 3 )
引数を格納する変数を設定

引数を格納する変数を設定

 次に同じ変数の設定に

ExecuteSQL(“SELECT ” & $expr & ” FROM ” & $domain & ” ” & If ( $criteria ≠ “” ; “WHERE ” & $criteria ; “” ); “;”; “”)

とします。これをあるスクリプト名で保存し、スクリプトの実行でスクリプトのパラメーターに

“name” & ¶ & “user” & ¶ & “id=10”

とすれば実行できます。その実行結果は変数の設定で「Get ( スクリプトの結果 )」で受け取れます。

 この時、注意しなければならないのはテーブル名やカラム名が2バイトの日本語を使っていた場合、ExecuteSQLはダブルクォーテーション(“)でくくる必要があるので、スクリプトに引き渡す引数は「\」でエスケープしたダブルクォーテーションで下記のようにくくる必要があります。(「アイディー」はちょっと無理があるかな(笑))

“\”名前\”” & ¶ & “ユーザー” & ¶ & “\”アイディー\”=10”

 ちょっとわかりづらい説明かもしれませんが、うまく使うとExecuteSQL関数も使えるものになると思います。

FileMaker Pro 関数・スクリプト サンプル活用辞典 Ver.12/11/10/9/8.5/8対応 (関数・スクリプトサンプル活用辞典)

著者/訳者:野沢 直樹 胡 正則

出版社:ソーテック社( 2012-07-28 )

定価:

単行本 ( 528 ページ )

ISBN-10 : 488166963X

ISBN-13 : 9784881669631