1. FM Paradise
  2. 論理関数
  3. 論理関数「ExecuteSQL」

ExecuteSQL(SQLクエリ;フィールド区切り;行区切り{;引数...})

この関数はSQLクエリを実行し、フィールドの値を返します。また、この関数はどのレイアウトにいるかは関係なく、リレーションシップも関係なく定義できます。

この関数を使用するにはSQLのSELECT文の基礎知識は必要です。SQLクエリは「""」で囲みます。オプションの引数はクエリに動的なフィールドの値を使用する場合に使います(このオプションを使用する場合はどこのレイアウトにいるかが関係します)。フィールド区切りは複数のフィールドを返す場合に区切る文字を指定します。多くの場合、「""」「" "」(スペース)「","」が使用されます。行区切りは同じく、複数のレコードから値を返す場合のレコードの区切り文字を指定します。多くの場合「"¶"」が使用されます。

また、SQLクエリ中にSQLの予約語、日本語などが含まれている場合は「¥"」を使ってエスケープしなければなりません。

戻る値のデータタイプ数字やテキストなど
引数についてテキスト、引数ーフィールドやテキスト

ExecuteSQL("SELECT \"フィールド名\" FROM \"テーブル名\" WHERE \"フィールド2\"=10";"";"¶") ※これを実行するとテーブル「テーブル名」のフィールド「フィールド2」のなかで、「10」が含まれるレコードのフィールド「フィールド1」の値が改行区切りで返されます。

ExecuteSQL("SELECT \"野菜\" FROM \"野菜の名前\" WHERE ID=?";"";"¶";フィールド)

この式は、下記の「野菜の名前」というテーブルに対して実行されます。また、現在このテーブルとは別の非関連テーブルにいて、現在いるフィールド:「フィールド」の内容が、「3」であるとします。関数の一番最後のオプション引数にこのテーブルのフィールドの値を参照して、WHEREにある?に代入され実行されます。この?は複数設定することができ、オプションの引数を追加します。この?の出現順と、オプション引数の出現順がリンクしています。一番初めに出てきた?と一番初めのオプション関数がリンクします。

結果は「たまねぎ」を返します。

FileMakerフィールドの内容

使用する場面など

?、オプション引数を使用する場合はどのコンテキスト(テーブルオカレンス)にいるかで結果が変わりますが、検索をかけるテーブルと関連している必要がありません。この関数を有効的に使うとリレーションの数を減らすことができます。