LoginSignup
2
5

More than 5 years have passed since last update.

改行区切りテキスト(改行リスト)を取得する仕組み

Last updated at Posted at 2015-12-22

FileMaker Advent Calendar 2015の23日目

改行区切りテキスト(改行リスト)を取得する仕組み

改行区切りテキスト(改行リスト)とは?

単に改行で区切られたひとかたまりのテキストなんですが、FileMakerを使いこなしていく中で大きな役割をもっています
例えばこんなの
151223-01.png
フィールドの中で改行して複数の値を入れたら、もうそれは改行区切りテキスト(改行リスト)として使えます

ちなみにスクリプトの中では
151223-02.png
のようにすると
151223-03.png
こうなります

昨日[関連レコードへ移動] スクリプトステップについて書いてみるで、フィールドの中で改行して複数の値=改行区切りテキスト(改行リスト)を入れたら対象レコードの絞り込みに使えることに触れました

ということは改行区切りテキスト(改行リスト)どうにかすると便利に使えるということです

改行区切りテキスト(改行リスト)を扱える関数

改行区切りテキスト(改行リスト)を扱える関数で一番使いどころがあるのがGetValue関数です

GetValue

目的
値一覧にある値番号により与えられる要求された値を返します。
構文
GetValue ( 値一覧 ; 値番号 )
引数
値一覧 - 改行で区切られた値の一覧
値番号 - 一覧から返される値

ここでは改行区切りテキスト(改行リスト)を値一覧と呼んでますね
あとValueCount関数でしょうか

ValueCount

目的
テキスト内の値の合計数を返します。
構文
ValueCount ( テキスト )
引数
テキスト - 任意のテキスト式またはテキストフィールド

他にもいろいろとあるのでしょうが..

引き続き「Session Filter」スクリプトを見ていく

次のブロックを見てみる

「FMC2Goスケジューラーにおける絞込み検索機能」のつづきから引き続いてスクリプトを見てみる

151223-04.png
いきなり見慣れない関数「ExecuteSQL」が出てきました

ExecuteSQL

目的
指定したテーブルオカレンスに対する SQL クエリーステートメントを FileMaker Pro データベース内で実行します。
構文
ExecuteSQL ( SQL クエリー; フィールド区切り; 行区切り { ; 引数... } )
引数
SQL クエリー - SQL クエリーステートメント。ステートメントには、2つのクエリーの結果を組み合わせた Union 句を含むことができます。ステートメントには、オプションの引数がクエリーのどこで使用されるかを示す、プログラムに基づいて生成された SQL(ダイナミックパラメータ)を含むことができます。ダイナミックパラメータを指定する場合は疑問符(?)を使用します。
フィールド区切り - 計算結果のフィールド間の区切りとして使用される文字列。空の文字列が指定されると、区切りはコンマになります。フィールド区切りは、計算結果の最終フィールドの後には表示されません。
行区切り - 計算結果の中のレコード間の区切りとして使用される文字列。空の文字列が指定されると、区切りは改行になります。行区切りは、計算結果の最終行の後には表示されません。
引数- クエリーステートメントのダイナミックパラメータの値として評価、使用される式。
戻り値のデータタイプ
テキスト

いきなり

行区切り - 計算結果の中のレコード間の区切りとして使用される文字列。空の文字列が指定されると、区切りは改行になります。行区切りは、計算結果の最終行の後には表示されません。

空の文字列が指定されると、区切りは改行になります。って書かれています

ということはExecuteSQL関数は、デフォルトで改行区切りテキスト(改行リスト)が取ってこれる関数になっているようです

SQLとは

詳しくは
SQL - ウィキペディア
を参照

GUIでデータベース問い合わせを行わないデータベースシステムでは、一般的にSQLという問い合わせ言語を使って問い合わせの内容を書きます
GUIでデータベース問い合わせを行うものであっても、GUI操作の結果SQL文(SQLで書いた問い合わせの内容)を生成して実行しているものも多いです

ExecuteSQL関数は、FileMakerの外の世界では極一般的なやり方をFileMaker(12から)でも一部(簡単な問い合わせのみ)扱えるようにしたものです

「Session Filter」スクリプトのExecuteSQLを見てみる

このブロックでは

ExecuteSQL ( "Select \"__kp_Schedule_ID\" from Schedule" & $where ; "" ; "" )

なSQL問い合わせをしています
3つめの引数(行区切り)で""(空の文字列)が指定されているので、結果は改行区切りテキスト(改行リスト)で返ってきます

例えば「曜日」の「木曜日」を押した時、このブロックの中で使用されている各々の変数には

  • $IDs:問い合わせに該当するセッションIDが入る→該当するセッションIDの改行区切りテキスト(改行リスト)→[関連レコードへ移動] スクリプトステップで対象レコードを絞り込むための元ネタ
    151223-05.png

  • $where:SQLのwhere句という抽出条件を指定するものが入っている

 where Date_DayName in ('木曜日')
  • $$IDs:今回問い合わせに使用したSQL文が入っている
Select "__kp_Schedule_ID" from Schedule where Date_DayName in ('木曜日')

まとめ

今まで見てきた「Session Filter」スクリプトでは
- [関連レコードへ移動] スクリプトステップで対象レコードを絞り込みたい

ために
- 条件に該当するセッションIDを改行区切りテキスト(改行リスト)で取ってきたい

ために
- ExecuteSQLでデータベースへの問い合わせを行う

という流れになっているようです

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5