初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2015-11-16 11:24:56

ちゅこ
Guest

複数テーブルで、シリアル番号が重複しないようにする方法

使用環境: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::シリアル番号;$$シリアル番号]
現在のスクリプト終了

それとも、もっと良い方法があるでしょうか。
説明がわかりにくければ補足します。
よろしくお願いします。

#2 2015-11-16 11:28:10

ちゅこ
Guest

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

>テーブルBでレコードを新規作成して、シリアル番号 2 のレコードが出来たとして、テーブルBで、レコードを新規作成すると、自動的に シリアル番号 2 が入ってしまうので、テーブルBの方のデータが表示されてしまい、新しいレコードを作成することが出来ません。

↑すみません間違っていました。「テーブルBでレコードを新規作成して、シリアル番号 2 のレコードが出来たとして、テーブルAで、レコードを新規作成すると、」です、、、

#3 2015-11-16 11:56:23

旅人
Member

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

Aでシリアル2のレコードを削除して、次にAで新規レコードを作ると
シリアル3のレコードができるのでは?

Offline

#4 2015-11-16 12:11:30

ちゅこ
Guest

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

旅人様

すみません、たしかに、この場合は大丈夫でした。失礼しました。
Aでシリアル2の削除は忘れて、Bでシリアル2や、シリアル3のレコードを作成して、Aにはシリアル1のレコードしかない場合、Aで新規作成するとシリアル2から始まってしまうと思うのですが、そういう場合は、どうするのが良いでしょうか…。。。

よろしくお願いします。

#5 2015-11-16 13:05:48

チポ
Member

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

フィールドCには、シリアル番号が自動的に入力されるようになっています

二つのテーブルのフィールドCにその設定がしてあるのですか?

ということは、
どちらもシリアルはユニークということですよね。
ならば、二つのテーブルにする意味が有りますか?

Offline

#6 2015-11-16 14:18:39

ちゅこ
Guest

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

チポ様

回答ありがとうございます。

テーブルAで、データの一部を入力してリスト形式で一覧にして、テーブルBで詳細なデータを入力するので、テーブルは2つ必要なのです。
完全に同期するなら、同じテーブルで別レイアウトにしてもいいのですが、Aのレコードを削除して、Bだけ残す場合もあれば、Bから新規作成して、Aには入力しない場合もあるので…。。。

ややこしくてすみませんが、よろしくお願いします。

#7 2015-11-16 15:19:43

Moz
Member

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

テーブルAで、データの一部を入力してリスト形式で一覧にして、テーブルBで詳細なデータを入力するので、テーブルは2つ必要なのです。

テーブルAとテーブルBが 一対一 の関係だとしたら分ける理由は何でしょう?
リスト形式で一部のデータだけ見せてフォーム形式で詳細を入れれば良いだけではないかと......

Offline

#8 2015-11-16 15:36:20

チポ
Member

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

さらに、

レコード削除を前提とした構成は良く有りませんよ。

Offline

#9 2015-11-18 12:57:43

ちゅこ
Guest

Re: 複数テーブルで、シリアル番号が重複しないようにする方法

旅人様、Moz様、チポ様

回答ありがとうございます。

作り方としては良くないとは思うのですが、削除はさておいても、Bで新規レコードを作成しても、Aにはレコードを作成する必要がない場合もあるので…。
構成を考え直して、Aでレコードを新規作成、最初のフィールドを入力した時に、Bのレコードのフィールドを検索して、同じものがあれば、照合フィールドをコピーしてAに反映、なければBで新規レコード作成、としてみようかと思います。

一度作ってみるので、また、うまくいかない部分が出てきたら、ご指南をお願いします。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 520.01 KiB (Peak: 524.55 KiB) ]