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

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

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

You are not logged in.

Announcement

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


#1 2015-01-25 05:01:53

いるか
Guest

別テーブルのユニークでないフィールドを、ユニークにしながらインポートする方法

FMP13Adv Win7です。

(例:2015/01/30業務終了時点のデータ)
テーブルA(受付データ)
ユニークキー  名前       日付
A0001      田中太郎    2015/01/01
A0002      田中太郎    2015/01/07
A0003      田中太郎    2015/01/16
A0004      鈴木太郎    2015/01/16
A0005      田中太郎    2015/01/25
A0006      伊藤太郎    2015/01/30
A0007      伊藤太郎    2015/01/30

テーブルB(名簿)
ユニークキー  名前       コメント
B0001      田中太郎    あああああ
B0002      鈴木太郎    いいいいい

※例は少しフィールド名を変えており、実際のデータの名前フィールドにて、同姓同名はありえません。(テーブルBでは名前フィールドをユニークキーにすることも可能)

当日にテーブルAの名前に新しい名前が追加されたら、夜間にテーブルBのレコードを増やし、追加された名前をインポートしたいです。さらに名簿なので名前をユニークにしたいです。

上記の例の場合、B0003で伊藤太郎というレコード1つのみを作りたいのですが、互いのテーブルの名前フィールドを照合キーにして「一致しないレコードを追加」でインポートした場合、
当日いきなり2レコード以上あると伊藤太郎が2レコード追加以上されユニークが保てなくなってしまいます。

スクリプトやインポートで上手い具合に、テーブルAに追加された名前をユニークにして差分だけ新規追加することは出来ませんでしょうか。

現状思いつくのはExcelでエクスポートしてVBAをキックし、Excel側で重複を削ったものをインポートという方法ですが、この方法だとこの作業のためだけに稟議を上げてサーバにExcelをインストールしなければなりません。

何か良い方法はありませんでしょうか。

#2 2015-01-25 12:15:53

Hiro
Member

Re: 別テーブルのユニークでないフィールドを、ユニークにしながらインポートする方法

ユニーク氏名のリストを得るために、あえて別途実体テーブル(仮想TOテーブルで無く)は必要ですか?
元本データを別テーブルへ複写すると、同期性の問題が発生します。
FMインポートではユニーク照合インポートで「ユニークレコードのみ追加」インポートはできますが、
当然、元本で削除されたユニークレコードの同期(「削除」インポート?)はできません。

Offline

#3 2015-01-25 13:30:11

旅人
Member

Re: 別テーブルのユニークでないフィールドを、ユニークにしながらインポートする方法

Aでの削除は別問題として
Bの名前を常時ユニーク値制限にしておいてBからAをインポートして
ユニークキーをスクリプトでフィールド設定をLoopして行くとできますね。

BのLayoutEnterでレコード総数をグローバル変数$$nに設定
BからAをインポート
カウント用の変数$cを1に設定
Bの最初のレコードのキーを"B" &Right ("000"  & $$n+$c; 3 )にフィールド設定
Loop
次のレコードに移動して$cを$c+1に設定
キーを同じようにフィールド設定
最後まで来たら終了
といった感じで。
Aのインボートされるレコードを絞った方がいいけど。

Offline

#4 2015-01-25 15:39:06

Shin
Member

Re: 別テーブルのユニークでないフィールドを、ユニークにしながらインポートする方法

テーブルBを、氏名マスターと考えて、テーブルAに氏名を持たせない、という運用をすれば、インポートも不要になるのですが。
テーブルAからBへキーでリレーションを張り、氏名は関連フィールドとして表示。そのフィールドに名前を入力した時点で、テーブルBにレコードは作成される。という事でいかがでしょう。

Last edited by Shin (2015-01-25 16:56:31)

Offline

#5 2015-01-25 19:50:04

いるか
Guest

Re: 別テーブルのユニークでないフィールドを、ユニークにしながらインポートする方法

皆様ありがとうございます。

>Hiroさん
テーブルBでフォルダやファイル(カルテのようなもの)をバッチで生成したいと考えておりますので、
今回に関しては同期性は確保していなくて大丈夫です。(むしろ勝手に消えてしまうと困る。)ご指摘ありがとうございます。

>旅人さん
  ありがとうございます。
  頂いたアドバイスから着想してなんとかなりそうな感じがしてまいりました。
  テーブルBに固定値1か何かでフラグを作成し、テーブルAにBで作成済みフラグを用意しまずインポート、
  当たらなかったものを抽出し、名前でソートして変数に格納しながら一致しなければテーブルBへ新規レコード作成を繰り返せば実現できそうです。

>Shinさん
  説明が足りなくて申し訳ないのですが、テーブルAのデータは別の基幹システムから吐出されてくるもので、
  そちら側で勝手にバンバン追加されてしまう名前からマスタを作りたいという形です。

色々考え方があることがわかりました。行き詰まっておりましたので本当に助かりました。
ありがとうございます。

#6 2015-01-25 22:25:24

Shin
Member

Re: 別テーブルのユニークでないフィールドを、ユニークにしながらインポートする方法

その別のシステムとは、どのようにつながっていますか。

また、テーブルBのユニークキーの制限で、常時制限、ユニーク、としておけばいかがでしょう。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 8 queries executed - Memory usage: 517.77 KiB (Peak: 522.31 KiB) ]