みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
このところ、、またまたFileMakerの構造が分からなくなりました。(混乱しています。)
お力を貸してください。
顧客データを追加するフォームを作りたいと思います。
この場合、「登録」ボタンを置いて、いくつかのフィールドにデータが入力されていれば、新たなレコードを表示して登録を続けるようにしたいと思います。
ボタン設定で次のようなスクリプトを置けばよいのかなと思いますが、これだけでよいのか自信がありません。
IF ( IsEmpty ( 顧客管理::顧客ID ) or IsEmpty ( 顧客管理::顧客名 )
カスタムダイアログを表示 (”OK” , "顧客登録には、少なくとも「顧客ID」と「顧客名」の入力が必要です。" )
現在のスクリプト終了 [ ]
Else
新規レコード/検索条件
EndIf
Offline
このままだと、検索やレコードの修正を行ったあとで「登録」ボタンをクリックすると、どんどん空のレコードが増えていってしまいます。
なんとかなりませんか。
Offline
グローバルフィールドを必要分作って、
そこへ入力し、「登録」で新規レコードを作り、グローバルの値を移す。
常套手段ですね。
Offline
ああ、修正も有るんですね。
修正は「修正」ボタンでグローバルフィールドに値を移し、
「修正」で元のレコードに値を移す。
登録と修正は別のレイアウトがいいでしょうかね。
Offline
ああ!!
その「グローバルフィールド」なるものの正体がわかりません。
ヘルプを読んでみたり、ネットで検索してみましたが、いまいちピンときません。
次の解説は、比較的分かりやすいと思いますが、まだもやもやしています。
素人のために、もう少し丁寧に分かりやすく教えていただきたく存じます。
グローバルフィールドを活用しよう (FileMaker 12)
2013年02月01日 08:03 PM ファイルメーカーのTips
今回のテーマは、グローバルフィールドです。
FileMaker初心者の方向けになると思いますがよろしくお願いいたします。
グローバル格納が定義されたフィールドを、「グローバルフィールド」と呼びます。ヘルプはこちら(v12)
【グローバル格納】とはファイル内のレコード全てに共通した値を格納できるということです。
通常のフィールドがレコード単位でデータを保持するのに対し、グローバルフィールドはテーブル単位でデータを保持するというイメージです。 レイアウト上に非関連テーブルのフィールドを配置した際、通常であれば<非関連テーブル>と表示され入力できません。
しかし、そのフィールドがグローバルフィールドであれば入力可能となります。
リレーションシップの「照合フィールド」として使用することもできます。 設定方法は、データベース管理画面からオプションボタンで[フィールドのオプション]を開き、データの格納タブにある【グローバル格納を使用する】にチェックを入れるだけです。(下図)
Offline
書かれたTipsの通りなんですが。。
グローバルフィールドは
テーブルで唯一の値を持つ、
レコードに依存しないフィールドです。
ですから新規レコードを作らないでグローバルフィールドに入力しても、
どのレコードにも影響を与えません。
習うより慣れろ!
試してみたらいかがでしょう。
もちろんバックアップをとってからですよ。
Offline
私が作るなら、
カスタムダイアログで、グローバルフィールドの 顧客ID と 顧客管理::顧客名 を入力させて、それが完了すれば、他の入力項目の画面を表示させるでしょうね。
その2項目が入力されれば、新規レコードにしても良い様ですので、それから後は、実レコードへ入力してしまっても良いでしょう。
Offline
チポ 様
テーブル上のフィールドにもかかわらず、「レコードに依存しないフィールド」とはどういうことですか。
フィールドはレコードの一部ではないのですか。
そこのところが、いまいちわからないのです。
Offline
依存しない
が正しい言い方かは分かりませんが、、
レイアウトにグローバルフィールドを配置して、
どのレコードでもいいですから、何か入力してみてください。
他のレコードも見るとお分かりになるかと。
Last edited by チポ (2017-04-03 16:24:45)
Offline
グローバルフィールドはそのテーブル内で全レコード共通の1つの値を持つフィールドと考えてみるのが良いかも。
(レコードという言葉に固執しないのがホントは良いのですが)
だから
氏名の通常フィールドに入れるにはそれが正しくとも間違いであってもレコード作成が必要だけれど、
一旦、氏名gのグローバルフィールドに入力させて、確定操作のスクリプトによってその値をチェックしてから、
新規レコードして氏名フィールドに氏名gの内容を転記できるようになる。
チェック不合格なら新規レコードの前に氏名gの入力画面に戻して再入力を求めるダイアログを出す等。
Offline
チポ 様、ひぐらし 様 ありがとうございます。
グローバルフィールドが配置されているテーブルを単純な表形式のレイアウトで見てみましたら、何も入力されていませんでした。
レイアウトに配置されるフィールドは、何らかのテーブルのフィールドのみに限定されるというFileMakerの仕様があるため、スクリプト等で使用する変数以外には、テーブル上のフィールドと無関係なデータを一時保管する場所がないことの回避として、グローバルフィールドがあるということでしょうか。
ちょっと前に、変数以外にデータをどこかに保管して、それを利用して計算ができればなあと思ったことがありました。
こうした目的に使用できるのでしょうか。
そうすると、グローバルフィールドは、どのテーブルに配置しても同じだということになるように思いますが、間違っていますでしょうか。
Offline
以前は変数が無かったのでその代わりとして先にグローバルフィールドという仕組みがありました。
目的はまさしくその通りで変数が無い頃はグローバルフィールドの値でスクリプトのループ数を保持/カウントさせたりもしてました。
グローバルフィールドは共有環境で他クライアントとはリアルタイム共有されない仕様なので、
クライアント側でのスクリプトループ用にカウント値を入れるとか入力用のテンポラリとして使える訳です。
その後に複数のテーブルを内包できる構造に変わって変数も出来て...という歴史があるため、
概ね書かれた通りの理解で良いかと思います。
>そうすると、グローバルフィールドは、どのテーブルに配置しても同じだということになるように思いますが、
配置しても...という意味はレイアウトする事ですか?
それならどのテーブルと紐づけたレイアウトであってもそれと異なるテーブル内のグローバルフィールドを配置して編集参照が可能です。
ここでもう一度#5に書かれたヘルプTips記述を読むとスッキリするかも。
Offline
> グローバルフィールドが配置されているテーブルを単純な表形式のレイアウトで見てみましたら、何も入力されていませんでした
何か入力してみないと・・
Offline
> グローバルフィールドが配置されているテーブルを単純な表形式のレイアウトで見てみましたら、何も入力されていませんでした
何か入力してみないと・・
これは、保存されない仕様かもしれません。
別個に新たなテーブルにグローバルフィールドに作って、データを入力してみます。
チポ 様 ありがとうございました。
Offline
ひぐらし 様 ありがとうございます。
なんとなくモヤモヤしていたものが、徐々に解消してまいりました。
まだ、完全というわけではないのですが、このトピックについては全体として何とかなりそうですので、解決とさせてください。
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 599.87 KiB (Peak: 616.41 KiB) ]