Filemaker_Tech
Filemaker_Tech
話題 12 関連レコードを新規作成する。
relation 関係にある 相手のFileに新規レコードを作成します。
初歩的な話題で恐縮ですが,書きとめておきます。
1. 重複しない新規作成
A Fileのあるレコードの関連レコード( B File) が作成されていない場合に関しては, Filemakerは「ないなら作りましょう」という仕様なので, relationを介して関連レコードのFieldへ入力する(Field設定, 計算結果を挿入などのstepで), という指示でB Fileに押っ取り刀で新規レコードを作成してくれます。 この操作は 2回目は, すでに関連レコードが存在するので, 新規レコードは作成されません。“関連レコードへ移動” stepでは, 関連Fileの新規レコードは用意されません。 関連レコードがなければ, 対象レコードが ゼロと表示されるだけです。
2. 重複おかまいなしの新規作成
B Fileが関連Fileなら, B Fileのなかで “新規レコード作成”stepのScriptを作成し, それを A Fileから
遠隔操作します。これで重複おかまいなしの新規レコードが作成されます。
Sample (FMsample12)
2つのrelation関係にあるFiles に 一方のFileから関連レコード作成を実行します。
i. 重複させたくない場合
ii. 重複おかまいなしの場合
上記2つのやりかたがあります。”関連レコードへ移動”stepが 関連レコードを抽出する stepであることも分かります。
悩ましいエラー
v7以降, “このレコードはすでに別のウインドウで変更中のため, このウインドウでは変更できません。(301 or 306)”というエラーmessageに悩まされます。v6以前ではなかったmessageですが, Field値消去とか, レコード削除のときに発生します。
何のrelationもない単独FileのFMを動かしているときは起きませんが, relation関係がある2つ以上のFileを動かしてときに出てきます。 あるFileでactiveなレコードのField値が 他のFileで同時にactiveになっているので消去, あるいは削除できない, という意味(Filemakerの基本仕様)なのでしょうが, どの”ウインドウ”で変更中なのかすぐに分からず, 作業は進めず, 困惑します。 エラー処理オフにしても, 表示が出ないだけで, エラー状態は解消されません。
relationしている他のFileのactive レコードをずらしてやると 解消します。ただ, relation Fileが複数あると, 即座にエラー状態を解くことが難しいときがあって困ります。対処法として, sampleのような Loop Script( 回避script )を作っておき, めぼしいFileをぐるっと回って, active レコードを変更して回ります。そうすると, 何事も無かったかのように動きます。このエラーは一人のユーザーで使っていても出る, というのがイラツキます。(-.-) FMではユーザーとウインドウが同義語なのかな, と推測します。
上記のsample Fileで このエラーが再現できます。ただし, ときに 同じ状況と考えられるのに エラーがでないときがあり, なんでー, と分からなくなるときもあります。(-.-)