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

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

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

You are not logged in.

Announcement

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


#1 2018-04-30 22:26:03

setuya
Member

スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

スクリプトがうまく働かないので教えてください。

テーブルA
ID(自動番号入力)
作成月

テーブルB
ID
作成月


テーブルAで新規レコードが作成されて、IDフィールドが入力されたら、テーブルBにテーブルAのIDとテーブルAの作成月が
入力されるようにスクリプトを作りました。

テーブルAのIDフィールドに、スクリプトトリガ OnObjectExitを使って、
新規レコード作成
フィールド設定[ターゲットフィールド: テーブルBのID] 計算結果:テーブルA::ID
フィールド設定[ターゲットフィールド: テーブルBの作成月] 計算結果:テーブルA::作成月


もちろんテーブルAとテーブルBはIDでリレーションして、
テーブルBでのレコードの作成も許可しています。

このスクリプトだと、フィールドBへIDは入力されるのですが、
なぜかテーブルBの作成月に、テーブルAの作成月が挿入されません。
テーブルBの作成月フィールドは空白のままになっています。

なぜIDフィールドには計算結果が挿入されるのに、
作成月フィールドには計算結果が挿入されないのかが不明です。


もし分かる方がいれば教えていただけますか?

Offline

#2 2018-05-01 00:36:41

Shin
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

まず、
> フィールド設定[ターゲットフィールド: テーブルBのID] 計算結果:テーブルA::ID
は無駄ですね。
スクリプトが動く時点で、作成月が、まだ設定されていないのでは。でしたら、レコードの確定をしてから、コピーの動作に入ればいいかも。
また、根本的に、同じデータのレコードを作る必要があるのですか?

Last edited by Shin (2018-05-01 08:58:29)

Offline

#3 2018-05-01 08:52:35

チポ
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

> テーブルAのIDフィールドに、スクリプトトリガ OnObjectExit
IDフィールドは自動入力ですから、カーソルの出入りはないのでは。

また、
レイアウト切り替えしていなければ、
新規レコードはテーブルAに作られますが。。

Offline

#4 2018-05-01 09:01:45

Moz
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

Shinさん、チポさんが書かれている内容の Mix で答えのような。

[OnObjectExit]トリガによってスクリプト呼び出し
[新規レコード作成]でテーブルAに新しいレコードが作成される
※この際に自動入力でテーブルAの「ID」の値は設定される(空欄にならない)
[フィールド設定(テーブルBのID)]でテーブルBの「ID」にテーブルAの新しいレコードの「ID」が設定
[フィールド設定(テーブルBの作成月)]ではテーブルBの「作成月」に空欄が設定
※スクリプト内で作られたばかりのレコードなので値が入っていない

作成オプションをオンにしているのであれば
テーブルBの「ID」には実行時のテーブルAの「ID」が自動入力されるので[フィールド設定]ステップは不要です。

Last edited by Moz (2018-05-01 09:02:39)

Offline

#5 2018-05-01 09:06:31

Moz
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

テーブルAの「ID」は自動入力されるので、

テーブルAで新規レコードが作成されて、IDフィールドが入力されたら

このタイミング設定は適切ではありません。

「作成月」の有無に関係なく実行されてしまいますし、
OnObjectExit をトリガするためには無駄にフィールドにカーソルを入れなければいけません。
(自動入力されるIDが手入力で変更できるとしたらデータベースとしてNGですし)

Shinさんが上で指摘しているとおり同じ構成のテーブルが2つある必要性はないので
テーブルAとテーブルBの目的を詳しく書くか、構造の見直しが必要ではないでしょうか。

Offline

#6 2018-05-12 23:01:30

setuya
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

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

色々、自分でやってみて、
もう1度相談させてもらいたいです。

やりたいことは、
「テーブルAに新規レコードが作成されるタイミングで、スクリプトをかけて
テーブルBに新規レコードを作成し、テーブルAで自動入力されたIDをテーブルBのIDフィールドに挿入する」ということです。

テーブルAに新規レコードが作成されるとIDが自動入力されます。

テーブルAのIDフィールドにOnObjectExitをかけても、やはりカーソルの移動がないためか、
うまくテーブルBにIDが挿入されません。

レコードが作成されるタイミングで、別テーブルに新規レコードを作成し、
IDを挿入する方法はないでしょうか?

Offline

#7 2018-05-13 00:47:50

mic
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

フィールドではなくレイアウトの OnRecordCommit 辺りでやってみては?

Offline

#8 2018-05-13 12:01:22

Shin
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

もう少し具体的な運用を書いてみれば。
普通は、別テーブルに 同じ ID を持つレコードを同時に作成する必然性は無いですよ。
あえて作ったそのレコードをどう使うのですか。

Offline

#9 2018-05-14 22:32:33

setuya
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

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

以下のトピックスのようなことをやりたいのです。
https://fm-aid.com/bbs2/viewtopic.php?id=7827


新規で入院してきた患者の書類を、入院テーブルにレコードが作成された段階で、
書類作成テーブルに同一患者の書類レコードを作成したいです。

そのため、同じ入院IDをテーブルAでもテーブルBでもリレーションで結んで、
運用したいです。

説明不足で申し訳ありませんでした。

Offline

#10 2018-05-15 08:57:02

Shin
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

その書類は、そのスレッドのように、月一などで作成されるものですか、それとも、1入院に1回作られるものですか。

Offline

#11 2018-05-15 09:15:30

チポ
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

Shinさんと同じ疑問ですが

> 新規で入院してきた患者の書類を、入院テーブルにレコードが作成された段階で、
> 書類作成テーブルに同一患者の書類レコードを作成したいです

「書類作成テーブル」とは何でしょうか?


書かれたことだけで考えれば、
入院テーブルのIDフィールドにトリガをかけて、
ID入力後に
書類テーブル::入院IDに入力することで出来ますよ。

リレーションの設定で、書類テーブルのレコード作成に許可を与えれば、
書類テーブルの新規レコード作成は無用です。
自動でレコードが作成されます。

Offline

#12 2018-05-15 09:20:52

setuya
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

ありがとうございます。

>「書類作成テーブル」とは何でしょうか?
すいません。
テーブルBのことです。

1患者毎に毎月1枚の作成が必要な書類です。

なので、月始めに入院している患者は、テーブルAにあるIDをテーブルBにインポートすることで解決しています。

しかし、月の途中で入院してくる患者は、テーブルAで新規登録された(新規レコード作成)段階で、テーブルBに新規レコードを作成してテーブルAのIDを挿入したいのです。

Offline

#13 2018-05-15 09:45:32

Shin
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

入院台帳の入院日に、OnObjectSave トリガーでも仕掛ければいいのでは。

書類管理は、入院管理番号で行った方が良いと思いますよ。

Offline

#14 2018-05-15 11:33:38

setuya
Member

Re: スクリプトステップがうまく動かず、フィールドに計算結果がうまく挿入されない

チポ wrote:

リレーションの設定で、書類テーブルのレコード作成に許可を与えれば、
書類テーブルの新規レコード作成は無用です。
自動でレコードが作成されます。

ありがとうございます。
無事にできました。

私のスクリプトの設定が間違っていました。

テーブルBで新規レコードを作成した後に、
フィールドAのIDをテーブルBのIDに挿入していました。

そのため、IDがうまく挿入されなかったのだと思います。

ありがとうございました。

あと、Shin様が言われるように入院日にOnObjectSave トリガーを仕掛けてうまくいきました。

この度はありがとうございました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.009 seconds, 9 queries executed - Memory usage: 599.24 KiB (Peak: 616.15 KiB) ]