ファイルメーカーで行ってみよう!~社内データベース~「キャンセル可能な入力方法(その2)」

unexus_staff

2016年01月20日 22:31

前回に続き、
「キャンセル可能な入力方法(その2)」
についての解説です。


グローバルフィールドの仕様

(1)すべてのレコードは同じ値を持つ。
(2)ファイルが共有された場合、自分が書き込んだ値は自分にしか見えない。
ファイルを閉じると自分が変更した内容はクリアされ、初期状態に戻る。
(3)リレーションが設定されていないテーブル(非関連テーブル)へのレイアウトからの入力は通常のフィールドであればできないが、グローバルフィールドであれば入力することできる。

今回も前回の続きとなりますが、
グローバルフィールドについて
ご説明させていただきます。


(1)「すべてのレコードは同じ値を持つ。」
ーーーーーーーーーーーーーーーーーーーー
社員番号 氏名    備考(グローバル)
ーーーーーーーーーーーーーーーーーーーー
001  田中一郎
002  山田二郎
003  鈴木三郎
ーーーーーーーーーーーーーーーーーーーー
このようなテーブル(社員マスタ:3件のレコード)に備考フィールドをグローバルフィールドとして設定し、この備考に文字を入力してみます。
ーーーーーーーーーーーーーーーーーーーー
社員番号 氏名    備考(グローバル)
ーーーーーーーーーーーーーーーーーーーー
001  田中一郎
002  山田二郎  あ|
003  鈴木三郎
ーーーーーーーーーーーーーーーーーーーー
(「|」はカーソルを意味しています)
2行目の備考に「あ」を入力し、
備考フィールドからカーソルが移動すると...
ーーーーーーーーーーーーーーーーーーーー
社員番号 氏名    備考(グローバル)
ーーーーーーーーーーーーーーーーーーーー
001  田中一郎  あ
002  山田二郎  あ
003  鈴木三郎  あ
ーーーーーーーーーーーーーーーーーーーー
となります。

どこか1レコードの値を変更すると、すべてのレコードに同じ値が入る(ように見える)訳ですね。
これは何の役に立つのか?
見方を変えると、「どのレコードを見ても入っている値を読むことができる」
「値を読む時にレコードを指定する必要がない」
という事になります。
通常、テーブルの中の値を読む時は
A.レコード(行)を指定してから
B.フィールド(列)を指定して
C.中の値を読む
という流れになりますが、グローバルフィールドではAが不要になります。
(どのレコードを見ても同じ値が入っているため)


(2)「ファイルが共有された場合、自分が書き込んだ値は自分にしか見えない。
ファイルを閉じると自分が変更した内容はクリアされ、初期状態に戻る。」

これは自分一人でファイルを使っている時には特に気にする必要がない事ですが、
ファイルメーカープロでファイルを共有した時とファイルメーカーサーバーにアップロードした時に有効になります。
上の社員マスタで備考に「あ」と入力し、すべてのレコードに「あ」が入っているように(自分には)見えてますが、他の人が同じファイルを開いて同じ社員マスタを見ると、備考欄には「あ」は入っていません。
その人が備考欄に「い」を入力するとその人にはすべてのレコードに「い」が入っているように見えますが、自分には「あ」がそのまま入っているように見えます。
他の人の入力によって自分が書き込んだ値を書き換えられてしまう心配がないことが大きかメリットとなっています。
ただ、書き込んだ内容を保存することはできません。ファイルを閉じる(終了する)と次に開いた時は初期状態(上の場合、未入力状態)に戻ります。
言語開発経験のある方でしたら、この動き、何かに似ていると思いませんか?
「変数」に似ています。
ファイルメーカーにも最近のバージョンに変数はあります。
ーーーーーーーーーーーーーーーーーーーー
スクリプト内のみ有効なローカル変数  ($xxx)「$」+「xxx」= 変数名
ファイル内でずっと有効なグローバル変数($$xxx)「$$」+「xxx」= 変数名 
ーーーーーーーーーーーーーーーーーーーー
の二種類です。
しかし、昔ののバージョンには変数がありませんでした。そこで、グローバルフィールドを変数の代わりとして使っていました。
ローカル変数はスクリプトが終わると消えてしまいますが、グローバル変数は一度セットするとファイルを閉じる(終了する)まで値を保存することができますし、終了後は消えてしまうというところはグローバルフィールドと一緒ですが、大きな違いとしてグローバルフィールドはレイアウトに配置して入力することができます。
ファイルメーカーのレイアウトではすべてテーブルにある項目のみ入力できる(変数に直接入力することはできない)という制限がありますので、一時的な入力場所としてグローバルフィールドを使うことが便利になります。


(3)リレーションが設定されていないテーブル(非関連テーブル)へのレイアウトからの入力は通常のフィールドであればできないが、グローバルフィールドであれば入力することできる。

ファイルメーカーのレイアウトはまずはそのレイアウトに対してメインとなるテーブル(正確にはテーブルオカレンス)を指定して作成します。
そのレイアウトに配置できる項目はその「メインとなるテーブルの項目と
リレーションシップグラフでそのメインとなるテーブルで繋がれた「関連テーブルの項目」のみになります。その他のテーブルの項目は「非関連テーブル」となり、配置してもデータを表示することができません。
ただし、グローバルフィールドであれば、この制限を受けず、いつでもどこでも配置することができます。

さて、こんなグローバルフィールドを使うと、キャンセル可能な入力が可能になります。
(次回へ続きます)

関連記事