みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
拙い文章でわかりにくいかもしれませんが、お許し願います。
Windows7 FileMakerPro12 初心者です。
テーブルAでおもに作業します。
メインの人物とサブの人物の2名のフィールドがあります(もちろん他多数フィールドも)。
それぞれの個人情報はテーブルBからリレーション表示しています。
個人情報に変更があった場合、テーブルAで上書きするのではなく、関連レコードの表示でテーブルBにとび、なおかつ、
履歴を残すため、レコード複製したものに修正加えるようにします。
<現在考えている設定>
テーブルAの個人情報はフィールド入力できないようにする
テーブルBは自己リレーションさせ、ポータルを縦に表示4列用意して、1行ずつ表示、それぞれ最初の行を1-4に。
作成タイムスタンプの降順でソートし、最新のものがテーブルAに表示される。
連絡先が以前のものに戻ることが多々あるので、レコード複製は履歴からいちばん修正少なく済むものを自分で選び複製。
ここから本題の質問です。
新規登録の人物の場合は関連レコードがないので、画面が遷移しませんが、同じようにテーブルBに移動⇒情報入力したい。
移動した時点で、新規レコード作成され、その氏名フィールドにはテーブルAで入力した氏名がはいっているようにしたいです。
スクリプト内容は変数にテーブルA氏名を渡し、テーブルBでフィールド設定する方法です。
が、うまくいきません。
試しにテーブルAのフィールドに設定したところ、きちんと表示されました。
今設定しているスクリプトです。
エラー処理[オン]
変数を設定[$なまえ;値:A::氏名]
関連レコードへ移動[関連レコードだけを表示;テーブル:「B」;使用するレイアウト:「B」;新規ウインドウ]
If[Get(最終エラー)<> 0]
新規ウインドウ[]
レイアウト切り替え[「B(B)」]
新規レコード/検索条件
フィールド設定[B::氏名;$なまえ]
End If
エラー処理[オフ]
スクリプトのどこがよくないのか教えていただけると幸いです。
また、初心者なため、まず考え方の誤りのご指摘も出てくると思いますが、改善点と合わせてご教示いただけると助かります。
なければ先に作ってから処理した方がシンプルでは。
リレーションでBに「レコード作成を許可」しておいて、
If[Count(B::氏名)=0]
フィールド設定[B::氏名;A::氏名]
レコード確定[ダイアログなし]
EndIf
関連レコードへ移動
~~~
Layouterさまありがとうございます。
ただし、うまくいきません。動きません。
If[Count(B::氏名)=0]はBテーブルにレコードがゼロという条件の気がしてしまうのですが。
Aで実行するので、Bテーブルに関連レコードがゼロの意味です。
先に提案いただいたもの、ほかもいろいろ試しているのですが、どうしても実行されている感がありません。
とても基本的な部分が欠落していると思われますが、そこが見当つかず困っています。
また、フィールド設定はレイアウト(テーブル)が違ってもすんなりいくものなのでしょうか。
AとBのリレーションはどうなっていますか?
スクリプトはAのレイアウトで実行していますか?
AとBはそれぞれの氏名フィールドでリレーションしています。
本当は同姓同名対策もしたいのですが、まだそこは考えずリレーションにANDで加えていません。
スクリプトはAで実行しています。
横から、、
ここで言う、
テーブルA,Bはテーブル定義のテーブル名ではなく、
リレーションシップグラフでのテーブル名です。
間違い有りませんか?
Offline
FM12でオレンジさんとLayouterさんのスプリクト試しましたが、両方動きましたよ。
チポさんの言われているようにテーブル名が違っているのかもしれませんね。
Bは自己リレーションしているとのことなので、少なくともBはグラフ内に2つあるようですし。
それでも動かないようならスプリクトを1ステップずつ試してみると何かわかるかも。
チポさま、nshrさま
はい、テーブル名が誤っておりました。きちんと動きました。ありがとうございました。
Layouterさま
教えていただいたスクリプト使用させていただきます。シンプルにいけて助かりました。
基礎レベルの低さが恥ずかしいです。ヘルプやテキストやここでもっと勉強していきたいと思います。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 563.64 KiB (Peak: 578.83 KiB) ]