みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
使用環境:FileMakerPro13/Windows7
テーブルA と、 テーブルB で、フィールドC を照合フィールドにして、リレーションを設定しています。
フィールドCには、シリアル番号が自動的に入力されるようになっています。
テーブルB には、テーブルA のフィールドをレイアウトに設置して、参照しているので、テーブルAで新規作成すると、テーブルB にも反映するようになっています。
テーブルAのレコードが削除されても、テーブルBの方にはレコードを残したいので、リレーションの設定には、「他のテーブルでレコードが削除された時、このテーブルの関連レコードを削除」は入れていません。
例えば、テーブルA と、テーブルB に、シリアル番号 1 のレコードがあり、テーブルAでレコードを削除しても、テーブルB には残っている場合。
テーブルBでレコードを新規作成して、シリアル番号 2 のレコードが出来たとして、テーブルBで、レコードを新規作成すると、自動的に シリアル番号 2 が入ってしまうので、テーブルBの方のデータが表示されてしまい、新しいレコードを作成することが出来ません。
シリアル番号が重複しないためには、どうすればよいでしょうか。
以下のようなスクリプトを作ってみたのですが、これだと、シリアル番号が重複しないレコードを1つ作成することは出来るのですが、2つ以上は出来ませんでした。(上の例だと、新規作成時にシリアル番号を3にすることは出来るけど、もう一度新規作成した時も3になってしまう。)
エラー処理[オン]
レイアウト切り替え[「テーブルB」(テーブルBのレイアウト)]
変数を設定[$$シリアル番号; 値:Get(対象レコード数)+1]
レイアウト切り替え「テーブルA(テーブルAのレイアウト)」
新規レコード/検索条件
フィールド設定[テーブルA::シリアル番号;$$シリアル番号]
現在のスクリプト終了
それとも、もっと良い方法があるでしょうか。
説明がわかりにくければ補足します。
よろしくお願いします。
>テーブルBでレコードを新規作成して、シリアル番号 2 のレコードが出来たとして、テーブルBで、レコードを新規作成すると、自動的に シリアル番号 2 が入ってしまうので、テーブルBの方のデータが表示されてしまい、新しいレコードを作成することが出来ません。
↑すみません間違っていました。「テーブルBでレコードを新規作成して、シリアル番号 2 のレコードが出来たとして、テーブルAで、レコードを新規作成すると、」です、、、
Aでシリアル2のレコードを削除して、次にAで新規レコードを作ると
シリアル3のレコードができるのでは?
Offline
旅人様
すみません、たしかに、この場合は大丈夫でした。失礼しました。
Aでシリアル2の削除は忘れて、Bでシリアル2や、シリアル3のレコードを作成して、Aにはシリアル1のレコードしかない場合、Aで新規作成するとシリアル2から始まってしまうと思うのですが、そういう場合は、どうするのが良いでしょうか…。。。
よろしくお願いします。
フィールドCには、シリアル番号が自動的に入力されるようになっています
二つのテーブルのフィールドCにその設定がしてあるのですか?
ということは、
どちらもシリアルはユニークということですよね。
ならば、二つのテーブルにする意味が有りますか?
Offline
チポ様
回答ありがとうございます。
テーブルAで、データの一部を入力してリスト形式で一覧にして、テーブルBで詳細なデータを入力するので、テーブルは2つ必要なのです。
完全に同期するなら、同じテーブルで別レイアウトにしてもいいのですが、Aのレコードを削除して、Bだけ残す場合もあれば、Bから新規作成して、Aには入力しない場合もあるので…。。。
ややこしくてすみませんが、よろしくお願いします。
テーブルAで、データの一部を入力してリスト形式で一覧にして、テーブルBで詳細なデータを入力するので、テーブルは2つ必要なのです。
テーブルAとテーブルBが 一対一 の関係だとしたら分ける理由は何でしょう?
リスト形式で一部のデータだけ見せてフォーム形式で詳細を入れれば良いだけではないかと......
Offline
さらに、
レコード削除を前提とした構成は良く有りませんよ。
Offline
旅人様、Moz様、チポ様
回答ありがとうございます。
作り方としては良くないとは思うのですが、削除はさておいても、Bで新規レコードを作成しても、Aにはレコードを作成する必要がない場合もあるので…。
構成を考え直して、Aでレコードを新規作成、最初のフィールドを入力した時に、Bのレコードのフィールドを検索して、同じものがあれば、照合フィールドをコピーしてAに反映、なければBで新規レコード作成、としてみようかと思います。
一度作ってみるので、また、うまくいかない部分が出てきたら、ご指南をお願いします。
Pages: 1
[ Generated in 0.009 seconds, 7 queries executed - Memory usage: 520.67 KiB (Peak: 525.21 KiB) ]