• ベストアンサー

FileMakerで登録ボタンを作りたい

FileMaker8.5Advancedを使っています。 仮テーブルとマスタテーブルがあり、それぞれ同じフィールド構成です。 フィールドは プライマリキー(シリアル値) 項目1 項目2 項目3 となっています。 入力者の入力間違いや、空のレコードがマスタテーブルに出来てしまうのを防ぐために、入力者に最初仮テーブルに入力させてその後マスタテーブルにルックアップでコピーしたいと思っています。 仮テーブルのレイアウトに各項目への入力フォームと[登録][キャンセル]というボタンを作成してあります。 ここで、仮テーブルからマスタテーブルへ、スクリプトでデータをコピーする方法が分かりません・・・。 ボタンに定義すべきスクリプト、各テーブル・フィールドに設定しなければならない項目を教えてください。 FMは使い始めてまだ日が浅く、用語も良く分かっていません。 どなたかお分かりになる方がいらっしゃいましたら是非よろしくおねがいいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

 自分もあまり使いこなしていないので、自信がないのですが・・・。  まず、仮テーブルですが、フィールドをすべてグローバルにしておきます。こうしないとリレーションを設定しないと<非関連テーブル>と表示されて入力できないはずです。  フィールドのオプションから[データの格納]タブ、「グローバル格納(すべてのレコードに1つの値)を使用する」にチェックを入れておきます。  これで、すべてのレイアウトに共通して使えるフィールドになります。  また、スクリプトでのフィールドからフィールドへのデータのコピーですが、 計算結果を挿入(選択;コピー先フィールド;コピー元フィールド) ・・・です。  でも、コピー先フィールドがレイアウト上にないと機能しません。  表示させたくない場合は、枠を消して小さくするなり、フォントの色を調整するなり、入力不可にする(レイアウトモードで、フィールドを右クリックし、[フィールド/コントロール]→[動作]、「フィールドへの入力を許可する」のチェックをはずす)なり、工夫が必要です。

Granatapfel
質問者

お礼

再度ご回答いただきありがとうございます。 スクリプトがまだよく分からず、どんな時にどれを使えばいいのか迷っていました。 計算結果を挿入はこのように使うのですね! 今回は時間がなくて以下のようにしました。うまく動いているように思います。 仮テーブルのフィールドを全部グローバルにする。 マスタテーブルのフィールドを全部ルックアップ(仮テーブルを見るようにする)。 仮テーブルのレイアウトとマスタテーブルのレイアウト2つを作っておく。マスタテーブルのレイアウトはhiddenにして最終的に見えないようにする。 仮テーブルとマスタテーブルのプライマリキーにリレーションを貼る(マスタテーブルにその他の情報のテーブルとリレーション貼っています) スクリプトで「登録ボタン」に レイアウト切り替え[マスタテーブル_hidden] 新規レコード/検索条件 レイアウト切り替え[仮テーブル] 消去[項目1] 消去[項目2] 消去[項目3] 新規レコード/検索条件 スクリプトデバッガで見てみるとずいぶんややこしい動きになっているような気がします。 まだ良い案をお持ちの方がいらっしゃいましたらどんな方法を使うのか知りたいのでしばらく締め切るのを待ちます。 よろしくお願いします。

Granatapfel
質問者

補足

別件でお教えいただいた計算結果の挿入を使用しました。 どうもありがとうございました! 助かりました。

その他の回答 (2)

  • oolongpa
  • ベストアンサー率0% (0/1)
回答No.3

1,考え方   登録ボタンを押すと新規カードが作成されます。必須項目に入力がなければ   入力のないカードを表示させます。   難点は、現在入力しているデータは登録ボタンを押さなくともデータになりま   す。回避策は、入力画面では、絶えず新規カードだけが検索されているので、   登録を押さないで、他のメニューに移動する時に削除するかカスタムダイアロ   グを出します。 2,必須項目を決めます。例えば項目1と2とします。   必須チェックという計算フィールドを設け   count(項目1:項目2)   この意味は、もし、必須に入力がなければ必須チェックの値は、0もしくは1に   なります。   登録ボタンもしくは新規カードボタンのスクリプトでは、必須チェックが2以下の   場合このカードを表示させます。でなければ、新規カードを出します。 3,仮登録は、大変な作業がいるかと思います。仮登録でも必須を同処理するか   必須を入力しないで登録を押すと無駄なデータができます。重複したデータの   処理をどうするか。ファイルメーカーは、空データができやすいです。一時は、   ゼロデータを検索し削除するスクリプトを実行させました。   全く新しく入力を始める場合は、必須項目を検索させる方法で、空データを   防ぐことはできると思います。   

Granatapfel
質問者

お礼

ファイルメーカーは今回初めて使用しているのですが、なんだか無駄なレコードが出来やすいという感想です。 スクリプトや関数などがまだ良く分かっていないので、ここに質問を投稿する前はoolongpaさんが書いてくださった3を考えていたのですが実現するスキルがありませんでした(ーー; 必須項目のチェックですね、count関数を調べてみようと思います。 ご回答ありがとうございました!

回答No.1

当方、FileMaker 9 Advancedですが、 レイアウトモードで [レイアウト] →[レイアウト設定] →[一般]タブ で、「レコードの変更を自動的に保存する」のチェックをはずす。  これで、レコードを変更した後、確認ダイヤログが出ます。  これではダメですか?

Granatapfel
質問者

お礼

回答ありがとうございます。 今作っているDBを主に使うことになる人はファイルメーカーを操作したことがない為、直感的に「登録した」と分かる必要があるので登録ボタン的なものが欲しいのですが難しいのでしょうか・・・。 カーソルをフォームからはずすとすぐにダイアログが出てきてしまいますよね・・・?押すことの出来るボタンが3つ出てきてしまい、初めて使う人は迷ってしまうと思うので登録ボタンが欲しいのです。 他に何か良い手段をご存知でしたらお手数ですが再度お教えいただけますか? よろしくお願いします。