- ベストアンサー
ファイルメーカーで関連レコードを作成する方法
お世話になっております。rapisと申します。 いつも有難うございます。 以下の件をお教えいただけませんでしょうか。 以下のような入力レイアウトがあります。 ID 業者ID 業者名 処理内容 ---------------------------------------- 00001 g010 abc工業 排水パイプ修理 00002 g003 def管工 パイプ溶接 00003 g010 abc工業 排水ポンプ設置 ・ ・ 00100 g011 ghi工場 特殊パイプ加工 というデータが入っています。 業者名は業者IDを入力すれば業者名が表示されるように業者テーブルからルックアップしています。 各IDをクリックすると、IDをキーにした、 更に詳細を入力できるレイアウトが表示されるようになっています。 詳細レイアウト: ID 処理日 担当者・・ ---------------------------- 00001 1/27 山本 ・ ・ 00100 1/31 鈴木 たとえば、入力レイアウトで ID:00001とID:00101が関連するデータであるということを表示したい場合、 どうしたらよろしいでしょうか。 できれば、 ID:00001の詳細レイアウトを表示している状態で、「関連レコード作成」というボタンをクリックすると、自動的にID:00101(現時点での最新ID)の番号が生成されて、詳細データを入力できるレイアウトが表示される。 ID:00001で検索しても、ID:00101で検索しても、どちらにも関連するレコードとして分かるようにしたいと思っています。 ※関連データとはいえ、同じ処理日や同じ業者とは限りませんが、関連する理由は特に表示する必要はありません。 また、関連レコードが3~4つまで追加されることもあれば、関連レコードが全く発生しないIDもあります。 分かりにくい質問で申し訳ございません。 ご教授いただけると大変助かります。 宜しくお願い致します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
それはIDを生成してから元のレコードに戻って「関連レコード」 フィールドに挿入することで解決します。今、ザッと作ってみまし たが、 フィールド設定 [ 変数1,Status(レコード番号)] フィールド設定 [ 変数2,ID&"¶"] 新規レコード/検索条件 計算結果を挿入 [ 関連レコード,変数2] スクリプト一時停止/続行[ ] フィールド設定 [ 変数2,ID&"¶"] レコード/検索条件/ページへ移動 [ 変数1] [フィールドで指定] 計算結果を挿入 [ 関連レコード,変数2] こんな感じになりました。実際には担当者名や店舗IDを入力してか らIDを生成するため、スクリプト一時停止/続行ステップの後にID フィールドに計算結果を挿入するステップを置くことになるはずで す。とりあえずポータルはきちんと表示されています。
その他の回答 (5)
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
> 関連レコードフィールド内で複数行表示された中の、 > 各レコードをクリックすれば、各詳細レイアウトへ移動 そりゃぁ無理です。改行で区切られてるだけで、ひとつのフィール ドのひとつの値なんですから。レイアウトを増やして、ポータルで 表示する「クリックすると移動する閲覧用」と関連レコードフィー ルドを表示する「追加用」に分けるとか、でなければ関連レコード フィールドは見えないような色で置いておくとか、それこらへんは 好みで適当にごまかしましょう。
お礼
grumpy_the_dwarf様: いつもすばやいご対応、心から感謝致します。 詳細を表示するポータルを下に貼り付けて 閲覧できるようにしました。 何から何までご丁寧にご教授いただきまして、 本当に助かりました。 有難うございました。
- chieffish
- ベストアンサー率44% (1149/2554)
>「関連レコード」というフィールドに改行区切りでIDを列記させるようなやり方で、 >ウマく処理出来ないですかね。 これ、すごく良いのではないでしょうか。 照合フィールドを改行で区切って連結という方法は以前どこかで勉強させて いただいたことがありますが、すっかり忘れていました。 rapis55さん、grumpy_the_dwarfさんの方法をお試し下さい。
お礼
chieffish様: 有難うございます。 grumpy_the_dwarfさんの方法で試してみます。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
IDも違うし処理日や業者も同じとは限らないけど「関連レコード」 なんだってのは困ったもんですが、もしかして、「関連レコード」 というフィールドに改行区切りでIDを列記させるようなやり方で、 ウマく処理出来ないですかね。 「関連レコードの作成」スクリプトで、 新しいID(たとえばmax(ID)+1とか)を変数にいれる 「関連レコード」フィールドに新しいID&改行を挿入 自分のIDも別の変数にいれる 新規レコードを作成 「ID」フィールドに新しいIDを設定 「関連レコード」フィールドに元のレコードのID&改行を挿入 ブラウズモード みたいな感じで。ウチは5.5なのでグローバルフィールドを使います が、最近のバージョンでは変数が使えるんですよね。それで関連レ コードフィールドからIDフィールドへリレーションしておいて、 ポータルでチョイチョイとか。いかがでしょう。 chieffishさんのダメ出し希望。
補足
grumpy_the_dwarf様: ご丁寧な回答、本当に助かります。 有難うございます。 さっそく仰るとおりにやってみたのですが、 以下の二つの壁にぶつかってしまいました。 いろいろ試してみたのですが、 やはり分からなくなってしまいました・・ 宜しくお願い致します。 (1) IDは、入力レイアウトで新規レコードを追加するたびに「担当者名&タイムスタンプ&店舗ID」 が自動で表示されるように設定しているため、 変数に入れる新しいIDを取得することができません。 (その時点では担当者名、店舗IDが不明のため) それで、ためしに、ID+1の数式を入れたところ、 例:山田-0000001-101-1 と表示されます。もう一度スクリプトを実行すると、 例:山田-0000001-101-1-1 と右に増えていくことに・・・。 もし、文字列+1の方法を使うとすれば、 元データ:山田-0000001-101に対して スクリプトを実行するたびに、 1回目:山田-0000001-101-1 2回目:山田-0000001-101-2 3回目:山田-0000001-101-3 ・ ・ と表示したいと思っています。 どうしたらよろしいでしょうか。 (2) 関連レコードフィールドと IDフィールドをリレーションし、 ためしに何回か(1)のスクリプトを実行したのですが、 ポータルには1レコード分しか表示されません。何が問題なのでしょうか。 初心者の質問ばかりで大変申し訳ございません。 引き続きご教授を宜しくお願い致します。 Win版FileMakerPro.8を使用しています。
- chieffish
- ベストアンサー率44% (1149/2554)
簡単そうなのはIDを00001-1とか00001-2とかにするになるのでしょうが 00005にも00008にも重複して関連するというのもあるのですか?
補足
ご返信ありがとうございます。 >IDを00001-1とか00001-2とかにする~ やはりその方法が簡単ですよね・・・ 実際のIDは、10桁ほどになるためかなり長く、 この方法では更に見にくくなる という難点があり、何か他に良い方法は ないだろうかと悩んでおります。 >00005とか00008にも重複して関連する~ 出来れば関連させたいと思いますが、 難しいようであれば、備考欄にでも 「ID:00001を参照」と入力するしかないかと 考えております。 何か良い方法がございますでしょうか。
- chieffish
- ベストアンサー率44% (1149/2554)
>各IDをクリックすると、IDをキーにした、 >更に詳細を入力できるレイアウトが表示されるようになっています。 現在、これはどのように設定しているのですか?
補足
chieffish様: お久しぶりです。 お世話になっております。 さっそく有難うございます。 >各IDをクリックすると、IDをキーにした、 >更に詳細を入力できるレイアウトが表示されるようになってる あ。例えの記載の仕方を間違えてました。 申し訳ありません。 記入レイアウトの各IDをクリックすると、 そのIDの詳細レイアウトが 表形式で表示されます。 例)記入レイアウトのID:00001をクリックした場合。 詳細レイアウト: ---------------------- ID:00001 処理日:1/27 担当者:山本 案件内容:修理・・・・ 処理費用:\10,000 --------------------- 以上が表示されます。 記入レイアウトのIDの部分にボタン設定で 詳細レイアウトを表形式で表示するように 設定しました。
お礼
今試しに改めてやり直したところ、 表示されるようになりました。 有難うございました!! 変数を3つ設定し、新規レコード上で自動生成されるIDも3つ目の変数に入れることでスムーズに表示されるようになりました。 本当に助かりました。有難うございました。 それで、 もう1点だけお教えいただきたいのですが、 結果をポータルではなく関連レコードというフィールドに表示しています。 できれば、 関連レコードフィールド内で複数行表示された中の、各レコードをクリックすれば、各詳細レイアウトへ移動するようにしたいのですが、どうすればよろしいでしょうか。
補足
grumpy_the_dwarf様: お返事が遅くなりまして申し訳ありません。 さっそく何度か試しているのですが、 ポータルに表示されません。 何点か教えていただきたいのですが、 Statusという関数が見当たらないため、 Get(レコードID)を使っています。 大丈夫でしょうか。 また、ページへの移動するところで、 [変数1]を指定しているのですが、 全くそのページに移動しません。 指定方法が間違っているのでしょうか。 お手数をおかけします。 どうぞ宜しくお願い致します。