2016年3月15日火曜日

ExecuteSQL関数を使おう!

こんにちは!

今回はExecuteSQL関数を使おう!をテーマにします。

ExecuteSQL関数ってなに?

ExecuteSQL関数はFileMaker(ファイルメーカー)12シリーズから登場した、比較的新しい関数です。

FileMaker Proのヘルプにはこのように目的の説明があります。

指定したテーブルオカレンスに対する SQL クエリーステートメントを FileMaker Pro ファイル内で実行します。

SQLクエリステートメントという難しい言葉が登場しました。

ではSQLとはなんでしょうか?

SQLはデータベースを操作するための言語です。

SQLはテーブルで行を作成したり、検索をしたり、テーブルを作ることもできます。

FileMakerでは「検索する」、SELECTという命令文のみを扱うことができ、データベースから条件に合うレコードを取得することができます。

つまり、ExecuteSQL関数は、FileMakerデータベースのデータから特定の条件に合うものを取得する関数であるといえます。

どういったときに使うのか?

通常、検索を行う場合は、データを取得したい(見たい)テーブル(オカレンス)のレイアウトに移動して、検索を行います。

しかし、このExecuteSQL関数を使うと、どこのテーブルにいるかが、関係なくデータを取得することが可能になる画期的なものです。

あるデータを取得するためだけに、こんなスクリプトを組んだことはありませんか?

レイアウトを移動する→検索を実行→あるフィールドのデータを変数に格納→元のレイアウトに戻る

多人数で使用し、かつ大きなデータベースだとその動きが見えたりすることもあり、ちょっと不便な場合もあります。

これがExecuteSQL関数を使用することで、1行で済みます。

また、リレーションを減らすこともできます。

どこのテーブルにいるかに関係なくあるテーブルのデータを取得できるわけなので、先ほど出てきたスクリプトの機能として作成しているリレーションがある場合にはこのExecuteSQL関数で代用できる可能性があります。

ExecuteSQL関数の実際

では、実際のExecuteSQL関数の使い方を見ていきましょう。

ExecuteSQL( "SELECT フィールドA FROM テーブルA WHERE フィールドA < 30" ; "" ; "" )


第一引数はSQL文を渡します。

第二引数、第三引数はフィールド(第二)、テーブル(第三)が複数ある場合にどんな記号で区切るかを渡します。例えば、"¶"と記載すれば、改行されます。

この関数で難しいのはSQL文ではないかと思います。

SQLにはなかなかなじみのない方も多くいらっしゃると思うので、この関数をつかえていない方も非常に多くいるのではないかと思います。

この場合 SELECT の後には情報を取得したいフィールド名が来ます。

次にFROM の後にはそのフィールドがあるテーブルを記載します。

WHERE は取得するレコードの条件を入力します。この場合、フィールドAの値が30未満のものが抽出されることになります。

これが基本となります。

※フィールド名、テーブル名などが日本語やSQLの予約語の場合は文字を「\"」で囲む必要があります。「\"フィールドA\"」という具合にです。

やはりSQLにもともとなじみのない方が使いこなすには、Advanced版にあるデータビューアなどを使って式のテストをしていくことで慣れていくいかないと思います。


--PR------------------------
<a href="http://www.dlmarket.jp/products/detail/309796" target="_blank">【FileMaker Pro ワンテーママガジンVol1~ExecuteSQL関数を使いこなそう!~】</a>