みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
お世話になります。FM13Ad、Win7で作っています。
患者さんの情報シートを作るうえで、薬名をフィールドに入力しています。
一人の患者さんの情報シート(1レコード)に薬名を入れるフィールドが14個(フィールド名「内服1~14」)あり、そのほかに便宜上グローバルフィールドととして「薬名」というフィールドがあり、内服フィールドそれぞれにスクリプトを組んでます。
別テーブルで薬名一覧を作ってそこには「DName」「DNameふりがな」フィールドを作って情報シートへの入力時にはこの一覧から選べるようにしています。
一覧にない新しい薬名が入力された場合はその薬名とふりがなを薬名テーブルに追加していく方法をとっています。
情報シートのテーブル「A」、薬名テーブル「B」
スクリプト
フィールド設定[A::薬名;Get(アクティブフィールド内容)] #内服1~14に入力された内容をグローバルへ格納
If[Get(アクティブフィールド内容)=""] #内服1~14が空白になった場合なにもしない
Else If [Count(B::DName)=0] #内服1~14に入力された薬名が薬名一覧に無い場合
カスタムダイアログを表示[入力フィールド1::DNameふりがな] #カスタムダイアログを表示してふりがなを設定しBテーブルのフリガナに入力
If[Get(最終メッセージ選択)=1] #カスタムダイアログの「はい」を押す
フィールド設定[B::DName;A::薬名] #グローバルの内容をBの薬名に追加
レコード/検索条件確定[]
End If
End If
上記のようなスクリプトを組みました。
ここで質問なのが、カスタムダイアログでふりがなを入力する際、カスタムダイアログの入力するテキストボックスに初期値を設定したいのですが、どのように設定すればいいのでしょうか?
また上のスクリプトだと、ふりがなフィールドが先にレコードの追加になっていますが薬名→ふりがなといった順番でレコードの追加を行いたいのですが流れが上手く作れないので皆さんのご意見を伺いたいです。
よろしくお願いします。
Offline
最初に内服1とかに薬名を入れてフリガナをカスタムダイアログで入れるわけですから
フィールド設定[A::薬名;Get(アクティブフィールド内容)]
If [Count(B::DName)=0]
レイアウト切り替え[Bテーブル]
新規レコード
フィールド設定[B::DName ; A::薬名]
カスタムダイアログ表示
メッセージ A::薬名&"のフリガナを入れて下さい"
入力フィールド B::DNameふりがな
End If
レイアウト切り替え[Aテーブル]
でいいのでは。
If[Get(アクティブフィールド内容)=""] は要らないです。
Offline
If[Get(アクティブフィールド内容)=""] は要らないです。
フィールドのスクリプトトリガに設定しているのでTab移動でフィールドを移動する際、空白でもスクリプトが実行されてしまうんですよね~。。。
Offline
そうでしたか。。
tab移動しないので忘れてましたm(_ _)m
Offline
内服フィールドは、別のテーブルに置いておき、ポータルで表示させると良いのでは。
そのテーブルの薬名と薬名一覧::DNameをリレーションしておき、薬名一覧::DNameふりがな の内容を IsValid で判断すれば、新規かどうかが判断できそう。
そのリレーションを通してふりがなを入力させれば、シンプルになるのでは。
薬名が空白ならばリレーションが成立しないので、IsValid で0が返るので、そちらの考慮も不要かも。
https://dl.dropboxusercontent.com/u/926 … 64.fp7.zip
今のままでも、12個のリレーションと12個のスクリプトを作れば出来るでしょうが。同じ物を作るのは面倒でしょう。
Last edited by Shin (2015-12-13 23:42:26)
Offline
[ Generated in 0.007 seconds, 10 queries executed - Memory usage: 512.91 KiB (Peak: 517.82 KiB) ]