みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
OS:[MacOS10.11.6] FileMaker Ver:[14Advanced]
顧客テーブルと領収テーブルがあります。
この2つのリレーションシップの編集画面において、領収テーブル側の「「他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除」チェックボックスに
✓を入れています。
つまり、顧客レコードの1つが削除されたとき、領収テーブルの関連レコードがすべて削除されるようにしています。
そこでメンテナンスのため、関連テーブルである、領収テーブルのレコードを一切削除せずに、顧客テーブルの全レコードを削除したいと思い、以下のスクリプトを作ったのですが
顧客テーブルのレコードを削除すると、関連テーブルである領収テーブルのレコードも削除されてしまいます。
どこが間違っているのでしょうか?
まずは、リレーションシップ図で顧客テーブルの新規テーブルオカレンスを作成このテーブルオカレンスには一切、他のテーブルオカレンスとの繋がりはなく、
名前を「顧客_関連テーブルなし」とする。
レイアウト切替 [ 「全レコード削除用レイアウト」 (顧客_関連テーブルなし) ]
全レコード表示
対象レコード削除 [ ダイアログなし ]
リレーションシップ図で関連テーブルのないテーブルオカレンスに移動してから、全レコードを削除しているのですが、なぜか関連レコードも削除されてしまいます。
どこか、根本的な考え方が間違っているのでしょうか?
宜しくお願いします。
>このテーブルの関連レコードを削除」チェックボックスに✓を入れています。
このチェックを外してから顧客テーブルのレコードを削除したらいいのでは?
Offline
旅人様
返答ありがとうございます。
確かに、レコードの削除だけが目的ならチェックを外してから削除すれば良いだけなのですが
レイアウトを切り替えて、立ち位置であるテーブルオカレンスを切り替えれば、そのテーブルオカレンスのリレーションシップ設定に従うものと考えていたもので・・・
単純なミスをしているのか、ファイルメーカーの仕様ならテーブルオカレンスをどう理解して良いのかを教えて頂きたく投稿いたしました。
みなさん、よろしくお願いいたします。
[他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除]
このオプションは1箇所でも設定されていればレイアウトのオカレンスに関係なく関連レコードが削除されます。
1つのテーブルにオカレンスはいくつでも作成できますが実体としてのテーブルは1つです。
オカレンスが違っても テーブルからレコードが削除される ことに変わりはありませんから
リレーションオプションに基づいてレコードは消えます。
Offline
Mom様
なるほど。
1箇所でも設定されていれば削除されるのですか、理解できました。
ありがとうございます。
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 509.46 KiB (Peak: 516.37 KiB) ]