ExecuteSQL関数

ExecuteSQL関数

ExecuteSQL関数


ExecuteSQL関数について備忘録もかねてまとめておく。

まずは、サンプルとして上のテーブル構造のファイルを2つ用意する。一つは郵便番号のみがあるZipファイル。郵便番号と住所の2つのフィールドを持つファイル。Sampleファイルは同じく郵便番号と住所のみのファイル。この2つのファイルはリレーションは引いていない。
ここでSampleのファイルに郵便番号を入力すると、zipファイルにある住所を引っ張ってくるという仕組み。


住所フィールドはテキストで、計算値の自動入力を設定している。この計算にExecuteSQL関数を利用して、住所を引っ張ってくる。


計算式は下記の通り。
ExecuteSQL("SELECT \"住所\" FROM zip WHERE \"郵便番号\"=?";"";"";Sample::郵便番号)
ここでのポイントはまず、
(1)SQL文全体を””で挟む。
(2)全角文字、予約文字などは\" \"で挟む。
(3)WHERE の後ろに{フィールド名}=? と書くと4つめの引数にTO名::フィールド名と記述して照合させたいフィールド名を書く。
(4)2つめのフィールドはフィールド区切り文字。何も記述せずに""としたデフォルトでは「,」となる。
(5)3つめのフィールドはデータ区切り文字。何も記述せずに""としたデフォルトでは「¶」となる。
(6)SQL文の中に全角スペースを使わない。

次にWHERE 条件が2つあるとき。例えば、都道府県、住所1と住所2を入力したときに郵便番号を引っ張ってくるとき。下記のように記述する。
ExecuteSQL ("SELECT \"郵便番号\" FROM zip WHERE \"都道府県名\"=? AND
\"住所1\"=? AND \"住所2\"=?";""; ""; Sample::都道府県名;Sample::住所1
;Sample::住所2)

ExecuteSQL のエラーを読む方法はあります。
データビューアに以下のような計算式を作り、結果を見てみましょう。
※[今すぐ評価する]では正しく出ないので[監視]に登録して結果を表示して確認します。
Let ( [
  ~query = ExecuteSQL ( 処理したい内容 )
] ;
  Case ( ~query = "?" ; "" ; ~query )
) // Let

戻り値の例)
The table named "adummy" does not exist.
→テーブル名の指定が間違っている。
「みんなで助け合おう!初心者のFileMaker pro Q&A」からパクリました。


エントリーリスト

カテゴリーリスト

タグ

11

« 2024 »

1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30