ExecuteSQL
 
目的 
指定したテーブルオカレンスに対する SQL クエリーステートメントを FileMaker Pro ファイル内で実行します。
構文 
ExecuteSQL ( SQL クエリー; フィールド区切り; 行区切り {; 引数...} )
引数 
SQL クエリー - SQL SELECT ステートメント。ステートメントには、2つのクエリーの結果を組み合わせた Union 句を含むことができます。ステートメントには、オプションの引数がクエリーのどこで使用されるかを示す、プログラムに基づいて生成された SQL(ダイナミック引数)を含むことができます。ダイナミック引数を指定する場合は疑問符(?)を使用します。
フィールド区切り - 計算結果のフィールド間の区切りとして使用される文字列。空の文字列が指定されると、区切りはコンマになります。フィールド区切りは、計算結果の最終フィールドの後には表示されません。
行区切り - 計算結果の中のレコード間の区切りとして使用される文字列。空の文字列が指定されると、区切りは改行になります。行区切りは、計算結果の最終行の後には表示されません。
引数- クエリーステートメントのダイナミック引数の値として評価、使用される
戻り値のデータタイプ 
テキスト
起点 
FileMaker Pro 12.0
説明 
ExecuteSQL では、インジェクション攻撃によるセキュリティの脆弱性を避けるように FileMaker Pro データベースを安全にクエリーするためのダイナミック引数を含む SQL SELECT ステートメントを実行します。
ExecuteSQL は、FileMaker Pro で作成されたリレーションシップを認識しないため、SQL ステートメントでリレーションシップを柔軟に定義し、レイアウトコンテキストに関係なく、あらゆるテーブルからデータを取得できます。
ExecuteSQL は、データまたはデータベーススキーマを変更する SQL ステートメント(テーブルを挿入または削除するコマンドなど)と同時に使用することはできません。
クエリー解析または実行時にエラーが発生した場合、FileMaker Pro は「?」を返します。
メモ
 •
 •
 •
 •
 •
SELECT ステートメントの構文、サポートされる SQL ステートメント、式、カタログ関数については、『FileMaker ODBC と JDBC ガイド』および『FileMaker SQL リファレンス』を参照してください。
例1 
EmpID フィールドで関連付けられる、Employee と Salaries の2つのテーブルがデータベースに含まれているとします。
従業員と給与を表示するリスト
メモ  Empoyees::EmpID、Salaries::EmpID、Salaries::Salary フィールドは数字フィールドです。
ExecuteSQL 関数を使用して、現在のレコードや対象レコードを変更せずに、特定のレコードからフィールド値を返すことができます。
ExecuteSQL ( "SELECT Department FROM Employees WHERE EmpID = 1" ) は、現在のレコード、対象レコード、またはレイアウトにかかわらず「開発」を返します。
例2 
Employee テーブルに、Department 全体の Salaries に対する個々の Employee の Salary の割合を表示するフィールドを追加するとします。FileMaker Pro の計算を使用してこの値を出すことは可能ですが、ExecuteSQL 関数でダイナミック引数を使用してこのクエリーを指定できます。
Employee テーブルで計算フィールドを定義し、ExecuteSQL 関数を使用して次のクエリーステートメントを指定します。
Round ( 100 * Salaries::Salary / ExecuteSQL ( “select sum ( S.salary ) from Employees E join Salaries S on E.EmpID = S.EmpID where E.Department = ?”; “”; “”; Employees::Department ) ; 2 )
各 Employee のレコードで、計算フィールドには Employee の Department 全体の Salaries に対する個々の Employee の Salary の割合が表示されます。たとえば、姓が「Smith」のレコードは、「52.97」を返し、姓が「斉藤」のレコードは「100」を返します。
関連項目 
関数リファレンス(種類順)
関数リファレンス(名前順)
計算式について
関数について
計算フィールドの定義
計算式での演算子の使い方