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

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

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

You are not logged in.

Announcement

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


#1 2019-09-05 16:33:58

kzs
Member

テーブルを別テーブルに振り分ける

いつもお世話になっております。
早速質問させていただきます。
ファイル名:入院台帳
テーブル名:患者マスタ
フィールド名:ID、姓、名、郵便番号、住所
テーブル名:入院テーブル、
フィールド名:ID,入院日、退院日、手術日1、術式1、術者1、定時or緊急1、手術日2、術式2、術者2、定時or緊急2、手術日3、術式3、術者3、定時or緊急3、
                               手術日4、術式4、術者4、定時or緊急4、手術日5、術式5、術者5、定時or緊急5、手術日6、術式6、術者6、定時or緊急6

という2つのテーブルがあり、ID=IDでリレーションが組まれています。 入院台帳は1入院1レコードとなっています。

そして、今回新しく別のファイルで手術台帳なるものを作成することになりました。中身としては、
ファイル名:手術台帳
テーブル名:手術テーブル
フィールド名:ID、手術日、術式1、術者1、定時or緊急1、術式2、術者2、定時or緊急2、術式3、術者3、定時or緊急3、術式4、術者4、定時or緊急4、
             術式5、術者5、定時or緊急5、術式6、術者6、定時or緊急6、術式7、術者7、定時or緊急7
という中身になっており、入院台帳の手術日1~6を、手術日毎に1レコードとしたものです。

そこで、入院テーブル内の
手術日1、術式1、術者1、術式1,定時or緊急1、手術日2、術式2、術者2、術式2,定時or緊急2、手術日3、術式3、術者3、術式3,定時or緊急3、
手術日4、術式4、術者4、術式4,定時or緊急4、手術日5、術式5、術者5、術式5,定時or緊急5、手術日6、術式6、術者6、術式6,定時or緊急6

を手術テーブルの手術日、術式1、術者1、定時or緊急1、術式2、術者2、定時or緊急2、術式3、術者3、定時or緊急3、術式4、術者4、定時or緊急4、
             術式5、術者5、定時or緊急5、術式6、術者6、定時or緊急6、術式7、術者7、定時or緊急7に仕分けたいと考えております。

入院台帳の方で、ひとまず、手術テーブルを作成し、単純に1~6をそれぞれ1レコードにするならば、スクリプトで if分、新規レコード、フィールド設定、次へ、ループさせればいいかな?と思ったのですが、
同日の場合の仕分けが思いつかず、つまずいています。例下記
EX)
手術日1:2019/9/1 術式1:A 術者1:田中 定時or緊急1:定時
手術日2:2019/9/1 術式2:B 術者2:田中 定時or緊急2:緊急
手術日3:2019/9/1 術式3:C 術者3:佐藤 定時or緊急3:緊急
手術日4:2019/9/2 術式4:A 術者4:田中 定時or緊急4:定時
手術日5:2019/9/4 術式5:D 術者5:斎藤 定時or緊急5:緊急
手術日6: 術式6: 術者6: 定時or緊急6:

のような1レコードがあるとした場合。
理想としては
手術日1:2019/9/1 術式1:A 術者1:田中 定時or緊急1:定時
手術日2:2019/9/1 術式2:B 術者2:田中 定時or緊急2:緊急
手術日3:2019/9/1 術式3:C 術者3:佐藤 定時or緊急3:緊急
を1レコード

手術日4:2019/9/2 術式4:A 術者4:田中 定時or緊急4:定時
を1レコード

手術日5:2019/9/4 術式5:D 術者5:斎藤 定時or緊急5:緊急
を1レコード

手術日6: 術式6: 術者6: 定時or緊急6:
に関しては特に何もしない。しいて言うなら0レコード。

といった具合にしたいのですが、どのようなスクリプトを作成すればよろしいでしょうか?

どなたかご教示の程よろしくお願いいたします。

Offline

#2 2019-09-05 17:18:16

チポ
Member

Re: テーブルを別テーブルに振り分ける

1レコードに複数の手術があるのが間違いですよ。

1手術ごとに1レコードのテーブルを作り、
リレーションで参照すれば簡単に考えられます。

Offline

#3 2019-09-05 18:12:53

Shin
Member

Re: テーブルを別テーブルに振り分ける

1日に、1連の手術しか入らない、という前提で。(午前に1手術して、夕方に別手術、ということはない、という事です)
1手術に複数の術式と術者がそれぞれ入るのでしょうね。テーブルをもう一つ追加しましょう。手術テーブルを術式テーブルは手術番号でリレーションすればいいでしょう。

まず、入院の管理番号を作りましょう。自動入力でシリアル値を設定し、既存のレコードにはシリアル値で全置換しておきます。

術式テーブルに、手術番号、術式、術者、定時or緊急 を作ります。また、その中に、データ移行用として、入院番号、手術日 を置きます。入院番号、手術日のフィールドで自己リレーションを張っておきます。(このフィールドとリレーションは、移行作業後は不要ですので、削除してもいいです)
手術番号は、自動入力でシリアル値を、計算値で Case ( IsValid ( リレーション::手術番号 ) ; リレーション::手術番号 ; Self ) 上書きする 設定を追加します。

術式テーブルに、入院テーブル全レコードのの入院番号、手術日1、術式1、術者1、定時or緊急1をインポート(インポート時の自動オプションをオン、以下同じ)、次に、入院番号、手術日2、術式2、術者2、定時or緊急2をインポート、を6まで行います。(面倒なので、空白行も無視して全レコードをインポート)
手術日が空白なレコードを抽出して、削除します。

手術番号でソートして、エクスポートします。グループ化のチェックをして、手術番号、入院番号、手術日 をエクスポートします。そのデータを、手術テーブルへインポートすれば終わりです。

一応、スクリプトにしましたが、1度だけ動かすことになりますので、手動で十分では、
https://www.dropbox.com/s/pj1r4rs29dha3 … 2.zip?dl=0

ただし、この構造をとると、入院レコードの中に複数の手術日があり、それぞれ複数の手術があれば、ポータル内のポータルという構造が必要になりますが、これは擬似的にしか実現できません。(かなり苦労すると、ポータルの中のポータルがあるかのように作り込みは可能です)

Last edited by Shin (2019-09-13 15:48:25)

Offline

#4 2019-09-13 13:49:47

kzs
Member

Re: テーブルを別テーブルに振り分ける

皆さんありがとうございました。
Shinさんの方法であらかた整理できました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 8 queries executed - Memory usage: 516.39 KiB (Peak: 521.3 KiB) ]