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

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

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

You are not logged in.

Announcement

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


#1 2022-12-25 20:46:00

JJ
Guest

主キーについて

別システムよりCSVデータをインポート(元データとします)して、一部をヘッターとして利用するため(正規化?)重複を削除したもの
を別テーブルへインポートしました。さらに元データをコピーしてポータル表示で使用したいのですが・・・

手入力しなければならないデータもあり、追加していきたいのですが、うまくいかずに困っています。
元データはIDが2つあってそれぞれ連番でふられており、ID2つつなげればユニークキーになります。(インポートは随時行います)
手入力分は1から始めました(元データのIDがかなり先のため)

リレーションは元データとヘッダーテーブルとポータルをつないでいます。

元データとヘッターが別テーブルのため両方でIDを1からに設定したら、リレーションがおかしいのか?手入力した分が一部元データで反映されません

手入力分は別テーブルにしたほうがいいのでしょうか?

説明が下手ですが、なにかやり方がありましたら、教えてください。

#2 2022-12-25 21:15:48

Shin
Member

Re: 主キーについて

https://fm-aid.com/bbs2/viewtopic.php?id=13841
が参考になると思います。

Offline

#3 2022-12-25 21:51:20

JJ
Guest

Re: 主キーについて

ありがとうございます。

サンプルをみてもよくわからず・・・理解力がなくてすみません。

明細を2つ作ってリレーションするってことですか?
そのときのキーがよくわからないのです。
日付&取引先ではユニークにならないですよね?

#4 2022-12-26 01:27:30

Shin
Member

Re: 主キーについて

リレーションは、どの程度理解されていますか

Offline

#5 2022-12-26 07:41:15

JJ
Guest

Re: 主キーについて

はじめたばかりの初心者です。

サンプルと同じようにしてみましたが、やはり名前フィールドがうまくいかない(ポータル表示のレイアウトから入力
して一覧に反映されない)です。

#6 2022-12-26 08:44:47

Shin
Member

Re: 主キーについて

リレーションの初歩から学習した方がいいですよ。
https://www.claris.com/ja/resources/
にある、公式トレーニング教材を利用されることをお勧めします。

具体的にどのようなデータを扱っているのですか。
サンプルでは、リレーションを2重に定義してあります。それぞれのテーブルはマスターとなるテーブルとその明細となるなるテーブルで、マスター側はインポートするときに重複するレコードを自動的に刎ねるようになっています。その時に作成された主キーを、明細側のインポートをする時に取り込むようになっています。
明細をポータルで表示しておけば、マスター側のレコードを作れば、関連レコードとしてリレーションキーも設定されます。

Offline

#7 2022-12-26 10:53:34

JJ
Guest

Re: 主キーについて

勉強不足ですみません

インポートデータでダブリはありません。
インポートデータはID、レコードID、日付、従業員コード、区分、場所、時間などがあります。
例)
1 1 12/1 0001 A 北海道 5:00
1 2 12/1 0001 B 東京 12:00
1 3 12/1 0001 A 千葉 11:00
2 1 12/2 0011 A 東京 13:00
3 1 12/2 0012 B 福島  4:00

日付と従業員コードが繰り返しのため、その部分をヘッターとして別テーブルを作成。区分や場所を明細としてインポートデータをコピーしてポータル表示
ここまではなんとかできたのですが、手入力で追加したり、インポートデータを修正しなければならないものもあり、つまっている状態です。

サンプルだとインポートを2回することになりますよね?

#8 2022-12-26 15:16:41

Shin
Member

Re: 主キーについて

最初に書いていることと矛盾していますが。
ID、レコードID の組み合わせでユニークなのですか。それとも、日付と従業員コードでユニークとするのですか。
ひょっとして、ID、レコードID の連結で明細側のユニークとし、日付と従業員コードの組み合わせでマスター側のユニークとする、ということでしょうか。
それでしたら、ID がマスター側のユニーク値となっているようですので、それでリレーションを張ればいいのでは。手入力については、ID を例えば負数にしたシリアル値にしておくとかにすればいいでしょう。インポートするIDで上書きさせて、欠番は気にしないことにすれば、管理も簡単です。
https://www.dropbox.com/s/j2poie63v39jb … 6.zip?dl=0
設定してあるスクリプトを実行してみてください。

> サンプルだとインポートを2回することになりますよね?
2テーブルにデータを設定することになるので、インポートは2回必要でしょう。

さらに、手入力するために、元データのIDと関係無いリレーションキーを設定する必要があります。そのためには、UUIDを使ったリレーションキーをわざわざ作っています。このキーを使ったリレーションでは、何も考えずに手入力も可能です。

Last edited by Shin (2022-12-28 09:55:22)

Offline

#9 2022-12-27 10:36:04

himadanee
Guest

Re: 主キーについて

「ID、レコードID の組み合わせでユニーク」なのはインポート前の元データで、
「日付と従業員コードでユニーク」なのはインポート後のヘッダのテーブル
なので、矛盾はしてないですね。
(レコードIDというのはFMの用語としてあるので、間違いのもとなので変えた方がいいです。
IDがヘッダテーブル側の主キーで、レコードIDとしてるのはポータル内の行番号のようなものですよね。)

「マスター側はインポートするときに重複するレコードを自動的に刎ねる」の「重複」の意味を誤解して「インポートデータでダブリはありません。」と言ってるようです。
「日付と従業員コードが繰り返し」というのが「重複するレコード」と言ってるものです。IDもですね。例では、最初の3行が「重複するレコード」です。ヘッダテーブルでは1レコードにする必要があります。

「区分や場所を明細として」はいいですが、「インポートデータをコピーして」というのがわかりません。テーブルをコピーしたんでしょうか。
だとしたら、それは最初のテーブル作成時の作業としてはいいですが、運用中になったら同じ操作ではできません。
Shinさんの回答のように、「2つのテーブルにそれぞれインポート」になります。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 564.49 KiB (Peak: 578.91 KiB) ]