みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ファイルメーカーPro16、GO16、win7にて病院内の医療機器(人工呼吸器)の使用中点検用データベースを作成しています。
構成は下記になります。
テーブル:患者様情報
フィールド:ID、氏名、生年月日
テーブル:使用中点検
フィールド:ID、点検日時、点検に必要な各項目
使用方法としては、①患者様情報の入力②患者様IDでリレーションをし、使用中点検記録へ入力を行っております。
現在問題となっていることは、すでに登録されている患者様が再び人工呼吸器を使用する場合です。
新規登録用のスクリプトでは重複ケースに対応していないため、同じ患者様が重複して登録されてしまします。
やりたいこと:新規登録の際に、新規レコード上でIDを入力、重複していればメッセージ表示とレコードの削除。そうでなければそのまま新規レコードに入力可能
初心者なため上記以外の内容でもかまいません、ご教授いただけますようお願い致します。
> 重複していればメッセージ表示とレコードの削除
これより、
レコード作成前に重複判定した方がいいでしょう。
グローバルフィールドを作り、そこへIDを入力、
リレーションで関連レコードの有無でIDがあるか分かります。
Offline
チポ様、ありがとうございます。
ご教授いただいた内容、頭でイメージはできたのですが。。。
初心者ゆえ大変恐縮なのですが、どのようなスクリプトを組んでいけばよろしいのでしょうか?
新たに自己リレーションを設定
患者様情報::グローバルフィールド = 患者様情報 2::ID
グローバルフィールドにIDを入力して、
上記のリレーションの関連レコードが有れば重複、なければ新規レコード作成、
ですね。
この判定は
Count ( 患者様情報 2::ID )
でできます。
他にも
IsEmpty
IsValid
でも判定できますね。
判定のスクリプトを作り、
グローバルフィールドのスクリプトトリガ
OnObjectExit
で実行させればいいでしょう。
Offline
ちょっと乱暴と言われるかもしれない方法ですが。
チポさんの提案のように新たに自己リレーションを設定し、新規レコードの作成を許可しておきます。
患者様情報::グローバルフィールド = 患者様情報 2::ID
グローバルフィールドに入力が終われば、
フィールド設定[患者様情報 2::ID ; 患者様情報::グローバルフィールド]
関連レコードへ移動
の2ステップだけでもいいです。ただし、患者情報の変更履歴をとっていたり、ルックアップしているときには、そこへの影響を与えますので注意が必要です。
Offline
Shinさんの方法、
実際に私やっています ;;;
人にお勧めするにはちょっと乱暴かな、なんて。。
これをやるには
リレーションの設定で、レコード作成に許可を与えておく必要が有ります。
また、
既存のレコードが有る場合、レコードが書き換えられますので、
修正日の管理をしている場合も問題が出ますね。
Offline
チポ様、Shin様、ご教授ありがとうございます。
お二方に教えていただいた方法で解決致しました。
新規患者登録時→グローバルフィールドにID入力→自己リレーションにて重複チェック→重複していたら関連レコードへ移動or重複していなければ新規レコード作成。
やりたいことは解決できたのですが、一つ気になる点があります。
一人新たな患者様を登録後、二人目の患者様を登録しようとするとグローバルフィールドに前回患者様のIDが入力されたままになっております。
スクリプトなどでグローバルフィールドの初期化は可能なのでしょうか?
フィールド設定で、"" を設定するか、そのフィールドを表示してから消去すればいいです。
Last edited by Shin (2019-11-15 18:22:58)
Offline
Shin様
無事にやりたいことができました!
ありがとうございます!
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 516.35 KiB (Peak: 520.89 KiB) ]