みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
いつも大変お世話になります。
FM12を使ってます。
レコード内容を任意の順番で並び替えることはできますか?
リハビリの予約時間なのですが、
1患者に 例えば、PT 10:00 OT 11:00 ST 15:00
というレコードがあります。
レコード定義は、List(職種&リハビリ開始時間)です。
このレコードの結果が、なぜか ばらばらで表示されるので、
左からPT時間、OT時間、ST時間というように揃えて表示することはできませんか?
患者によってPT 9:00 ST 14:00 OT 10:00とか
表示される順番がバラバラなので揃えたいです。
時間も職種もバラバラなので。
Shin様、ご丁寧にありがとうございます。
まだまだわからないことはありますが、ここからしっかり勉強させてもらいます。
ありがとうございました。
> 予定一覧画面で直接レコードに入力しても、テキストが残らずに消えてしまうのはなぜでしょうか?
私のサンプルで?それとも作られたもので?
今日、職場のFmpro12でShin様に作って頂いたサンプルを何回もダウンロードしなおしてみましたが、
やはり予定一覧画面でレコードを入力しようとしてもレコードが入力できない現象がありました。
ただ、自宅に帰ってきて無料評価版のFMpro17ADを使ってみると、
予定一覧レイアウトに問題なくレコード入力ができます。
よく分かりませんが。。
しっかりサンプルファイルも1度展開してから開きました。
FMproのアップグレードは、できれば行いたいですが、
病院がそこに投資できるかは疑問です。
アドバイスを頂きありがとうございます。
FMpro12でこの運用ができるように頑張ってみます。
頑張って教えていただいたことを1つ1つ勉強してみます。
患者ID の数字で管理するとは、数字でしたら FM12でも集計できますので、ID 番号を入力しておく、という事です。
ルックアップ関数を使った集計とは、別に集計用のテーブルを用意して、繰り返しフィールドを用意します。そこに関数を使ってルックアップさせる方法です。ちょっとクセがあります。
厚かましいお願いなのですが、ここがやはり理解できないので、
サンプルファイルなどに反映させていただくことは可能でしょうか?
教えていただいて、これ以降は自分で頑張ってみます。
よろしくおねがいいたします。
そこを、患者ID の数字で管理されてはいかがですか。
または、ルックアップ関数を使った集計に変更するか、です。
すいません。
1つ1つ勉強していますが、理解できないので教えてくれますでしょうか?
あと、色々質問ばかりで申し訳ないのですが、予定一覧画面で直接レコードに入力しても、
テキストが残らずに消えてしまうのはなぜでしょうか?
Shin様、ありがとうございました。
少しずつ分かってきました。
もう1点聞きたいのですが、予定テーブルのs_業務_フィールドはどうやって作りますか?
集計フィールドですが、サンプルのように定義できないでいます。
教えて頂けますでしょうか?
Shin様、ありがとうございます。
予定表テーブルとは、どのようなものですか。
すいませんでした。
予定表テーブルとは、すでに既出しているサンプル内の予定一覧のことです。
もう1点伺えますか?
・予定一覧
・担当別患者表
この2つのレイアウトはほぼ同じとして、
予定一覧は、g_日付を選択することでレコードが切り替わりますよね。
担当別患者表は、g_日付とは連動せず、
スタッフが各々で入れたい任意の時間に患者の名前、予定を格納しておくレイアウトです。
例)スタッフA
9:00 鈴木
10:00 佐藤
11:00 相川
13:30 飯田
14:30 結城
15:30 品川
これがスタッフの数だけあり、自分で「この患者は、この時間に入れてほしい」というレイアウトです。
予定一覧のレイアウト内で、g_日付を変更するか、あるいは任意のボタンを選択することで、
担当別患者表のレコードデータを予定一覧にそのままコピー(ルックアップ?)したいのです。
毎日、翌日の予定を組むときに、
①予定一覧で翌日の日付を選択
②レコードが白紙に切り替わる
③担当別患者表のレコードデータを予定一覧にコピー
④手動で翌日出勤しているスタッフに患者を振り分ける
わたしのイメージはこんな感じです。
おそらくShin様は、わたしのイメージを理解して説明してくれてるのだと思います。
わたしの理解不足ですいません。
Shin様、ありがとうございます。
Shin様につっくていただいたサンプルが今作ってるものに近いです。
本当にありがとうございます。
やりたいのは、予定一覧レイアウトで、明日の入院患者のリハビリ予定を作ります。
1日1患者、午前と午後のリハビリをします。
予定表では
①まず担当者ごとに予定表レイアウトに患者を振り分けます。(この時点では全担当者の枠に患者がいます)
②翌日の予定組で休みのスタッフが必ずいるので、予定表レイアウト上で、休みのスタッフの枠から
ドラッグ&ドロップで翌日出勤スタッフの枠に患者を移動させます。
③ ①を実施するために、今回相談した、「担当別患者表」から患者予定をそのまま予定表テーブルにコピーしたかったのです。
この担当別患者表では、スタッフ毎に、「この患者は10時枠、この患者は11時枠・・・」といったように
毎日行う時間はある程度決まっています。
先ほど②のところで、その日の入浴や検査などの関係で時間をずらすこともありますが。
色々、書いて試しまいましたが、担当別患者表レイアウトも予定表レイアウトと同じようなレイアウトで
作れるといいなと思っていました。
そうすれば、毎日あらかじめ決められた担当別患者表レイアウトでの患者のスケジュールを
そのまま予定表レイアウトにコピーをして、翌日休みのスタッフの担当患者を
出勤している担当者にドラッグ&ドロップで移動させるだけになるので。
Fmpro12を使っています。
今、翌日のリハビリの予定表を作成したく、作成を試みています。
以下の2つのテーブルを作ってやってみています。
予定テーブル
キー日付
時間
担当者(20繰り返しフィールドでヘッダに配置)
業務1
業務2
業務3
・・・
・・
・
業務20
担当者予定テーブル
キー日付
時間
担当者(20繰り返しフィールドでヘッダに配置)
業務1
業務2
業務3
・・・
・・
・
業務20
両テーブルともに表形式で表示しています。
両方とも、レイアウト上では、レコードを21まで作成し、
時間フィールドに以下を表示しています。
8:40
9:00
9:20
・・・
・・
・
16:20
16:40
まで表示しています。
やりたいのは、担当者予定テーブルで、
業務フィールドに表示した各担当者に行で割り当てたに表示されたレコードを
予定テーブルの同じ位置のレコードにテキストをコピーしたいです。
担当者予定テーブルは
業務1=担当者1
業務2=担当者2
・・
・
というように列で担当者の予定を入れてもらっています。
その1日の予定をそのまま、
毎日組む、予定テーブルにそのままスクリプトボタン1つでコピーして反映させたいのです。
色々、試しているのですが、以下のようなスクリプトを行うと、
予定テーブルのレコードに「?」と表示されてしまいます。
レコード1に移動
フィールド設定[ターゲットフィールド:予定テーブル::業務1][計算結果:GetNthRecord(担当者予定テーブル::業務1 ; 1)]
フィールド設定[ターゲットフィールド:予定テーブル::業務2][計算結果:GetNthRecord(担当者予定テーブル::業務2 ; 1)]
フィールド設定[ターゲットフィールド:予定テーブル::業務3][計算結果:GetNthRecord(担当者予定テーブル::業務3 ; 1)]
以下同じようにターゲットフィールド:予定テーブル::業務20まで続く
レコード2に移動
フィールド設定[ターゲットフィールド:予定テーブル::業務1][計算結果:GetNthRecord(担当者予定テーブル::業務1 ;2)]
フィールド設定[ターゲットフィールド:予定テーブル::業務2][計算結果:GetNthRecord(担当者予定テーブル::業務2 ; 2)]
フィールド設定[ターゲットフィールド:予定テーブル::業務3][計算結果:GetNthRecord(担当者予定テーブル::業務2 ; 3)]
これをレコード21まで同じようにステップします。
これを行うと、なぜかコピー先の予定テーブルのレコード上は、?と表示されます。
リレーションの貼り方が違うためか、よく分かりません。
今、リレーションはキー日付で組んであり、テーブル先のレコード作成も許可しています。
計算結果をLookup(GetNthRecord(担当者予定テーブル::業務2 ; 3))にしたりしてみましたが、ダメです。
これらの計算結果のターゲットフィールドを同じテーブルの担当者予定テーブルのフィールドにすると、テキストはコピーされて反映されます。
乱文で申し訳ありませんが、どうすれば表示されますか?
教えてください。
Hiro様、以前は回答を頂きありがとうございました。
色々やってみたのですが、うまく直近の関連レコードの情報をルックアップ参照できません。
Hiro様が言って頂いた、"ルックアップに供するリレーションの設定で"というのは、どういうことでしょうか?
今、以下のようにテーブル構成していてます。
テーブルA テーブルB テーブルB2
ID = ID = ID
テーブルBにテーブルB2のデータをルックアップしたいです。
テーブルBとテーブルB2間で日付け同士もリレーションをするということですよね。
テーブルBにある日付けに関するフィールドをリレーションすればいいのでしょうか?
日付けフィールドの降順ソートは、どちらのテーブルに設定するのでしょうか?
テーブルBですか?
テーブルB2ですか?
Hiro様
ありがとうございます。
そうなのですか。
やってみたいと思います。
ありがとうございます。
いつも本当にお世話になります。
ルックアップについてお聞きしたいです。
ルックアップは、一番初めの関連レコードの情報を参照しますよね。
患者が毎月1回の書類を作成するときに、直近のレコードの情報を参照することはできないのでしょうか?
例えば、
1回目 レコードの値:1
2回目 ルックアップで1を参照
3回目 ルックアップで1を参照
・・・
・・
そうではなくて
1回目 値:1
2回目 ルックアップで1を参照だが「2」にレコードを修正
3回目 ルックアップで2回目の「2」を参照 「3」に修正
4回目 ルックアップで3回目の「3」を参照
・・・
・・
このように1回目のデータを参照するのではなくて、
直近のデータを参照してコピーすることはできますか?
データが最新のものになっていくようなイメージです。
Shin様、ありがとうございました。
ファイルメーカー10を使用。
やりたいことが1つあります。
スタッフの目標管理シートを1つのファイルメーカーのファイル内で管理したいです。
スタッフは40名ほどいます。
スタッフ1人1人には、自分の目標管理シートにしかアクセス、編集ができないように制限をかけたいです。
ただ、管理者はファイル内では、自由に40人いるスタッフの目標管理シートを閲覧、編集ができるようにしたいです。
1つのレイアウトを・・・
管理者 ⇒ ファイル内のでデータは全て閲覧できる
スタッフ ⇒ 自分の目標管理シートのみ閲覧、編集可能
このようなことはできますか?
リレーション
入退院::入院管理番号 = 計画書::入院管理番号
日付(年月?)の降順ソートこれで、
入退院の入院中のレコードから見て、
計画書に当月のレコードがない場合は計画書のレコードを作る必要がある。ということですよね。
1日に限らず毎日開くときにこの判定をすればいいのでは。
チポ様
ありがとうございます。
確かに毎日開くときにこの判定をすればいいです。
この"判定"というのは、使用者が視覚で判断するということでしょうか?
ファイルメーカーに判断させるための術がありますでしょうか?
Shin様
ファイルメーカーコミュニティと同じ投稿をしてしまいました。
以後、重複した質問は避けるようにします。
大変申し訳ありませんでした。
この処理が簡単そうで、考えないといけない事がいくつかあり、処理を複雑にします。
また、ファイルを開いた時のトリガー処理にすれば、比較的簡単なのですが、運用上、入院当日に必ずつくる、という事になっていれば、1日に入院の方の処理はどうするかを考える必要があります。また、複数回ファイルが開かれたときに、処理がすんでいるかどうかを確認する、必要があります。その際に、前回に処理が完了しているかどうか、プリンター側で印刷に失敗した時には再実行が必要になる、なども処理を面倒にします。
そうですか。
この計画書は、入院している患者は毎月必ず作成しないといけない書類です。
ですので、新規入院の場合は必ず作成できるようにはなると思いますが、
次月以降に自動で作成できるようにするには複雑な処理が必要になるのですね。
では、手動でも月初に入院している患者を検索、抽出して計画書テーブルにインポートする形が一番今のところ簡単なやり方という理解でよろしいでしょうか?
チポ様
なるほどですね。
ありがとうございます。
この計算式だと、毎月1日になったときに手動でボタンをクリックするなりしないといけないと思います。
もしできるなら、完全に自動化したいのですが、
毎月1日になったら、入院中の患者を検索して計画書テーブルにそれをインポートする仕組みは作れますか?
変数か何かを使いますか?
教えてください。
ある作業を自動化したくて苦労しています。
力を貸していただきたいです。
FMpro12、win8.1です。
やりたいことは以下の2点です。
1. 入退院テーブルで毎月1日になったら「毎月1日に入院中の患者」を抽出して、入院管理番号を別テーブルにインポートする
2. 1日移行に新規入院患者が入院したら自動で計画書が作成されるように、入退院テーブルに新規レコードが作られた段階で、計画書テーブルにもレコードを作る。
このスクリプトステップをどんな風に組み立ててもうまくいきません。
具体的に教えていただくことはできませんか?
宜しくお願い致します。
入退院テーブルに、以下のようなフィールドがあります。
・患者ID
・入院日
・退院日
・入院管理番号
計画書テーブル
・入院管理番号
・(その他、フォーマットに準じたフィールド)
入退院テーブルと計画書テーブルは、
入院管理番号でリレーションをしています。
患者マスタテーブルには、
・患者ID
・患者名
・入院管理ID
があり、患者マスタテーブルと入退院テーブルは患者IDでリレーションしています。
宜しくお願いします。
FMpro12、win8.1を使っています。
データベース内の患者をダイヤログボックスで検索をかけたいです。
レイアウトを新規に作成して検索画面をレイアウトを作ってもいいのですが、任意のレイアウトからスクリプトを組んで
その場でダイヤログボックスが出る方が都合がいいです。
ダイヤログボックスで、任意の患者名を入力して、
検索をかけるスクリプトを作ることはできますか?
お世話になります。
今、業務改善でやりたいことがありまして、それがファイルメーカーで実現可能かどうかを相談したいです。
日々、手作業で時間のかかっている作業を効率化したいと考えています。
かなり長文になることをご容赦ください。大変申し訳ありません。
具体的には、入院中の患者のリハビリ予定時間を各リハビリスタッフ事に自動的に組んでいきたいです。
各患者のリハビリ予定時間は以下の20分枠単位の時間内で1人の患者に対して40分~1時間実施されます。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
理学療法士が8名 作業療法士が8名 言語療法士が3名います。
1人のスタッフの1日のスケジュールイメージはこんな感じです。
スタッフA(理学療法士) スタッフB(作業療法士) スタッフC(言語療法士)
8:40~患者A(担当) 8:40~患者D(担当) 8:40~ 患者Z(担当)
9:00~ 9:00~ 9:00~
9:20~ 9:20~ 9:20~
9:40~ 患者B(休みのフォロー)9:40~ 患者E(担当) 9:40~ 患者K(担当)
10:00~ 10:00~ 10:00~
10:20~ 10:20~ 10:20~
10:40~ 10:40~ 患者F(担当) 10:40~
11:00~ 患者C(担当) 11:00~ 11:00~ 患者A(担当)
11:20~ 11:20~ 11:20~
11:40~ 11:40~ 11:40~
13:40~ 患者D(休みのフォロー)13:40~ 患者A (担当) 13:40~ 患者L(担当)
14:00~ 14:00~ 14:00~
14:20~ 14:20~ 14:20~
14:40~ 14:40~ 患者B (担当) 14:40~
15:00~ 患者E(休みのフォロー)15:00~ 15:00~ 患者M(休みのフォロー)
15:20~ 15:20~ 15:20~
15:40~ 15:40~ 15:40~
16:20~ 患者F(休みのフォロー)16:20~ 患者C (休みのフォロー)16:20~ 患者T(休みのフォロー)
16:40~ 16:40~ 16:40~
患者1人はリハビリを午前中と午後に1回ずつ実施します。
理学療法を午前中に実施したら、作業療法は午後に行うという具合です。
理学療法と作業療法は医師から全員処方が出てるので必ず実施します。
でも言語療法は、32名の内、処方されてる方のみ行うので全員ではありません。
言語療法も午前か午後に実施します。
なので、例えば、理学療法を午前中に実施し、午後に作業療法と言語療法を実施するという具合です。
今、病院には最大32名が入院できるのですが、入院中の患者のリハビリを以下の条件を除いた時間でリハビリ時間を自動で組むことはできますでしょうか?
条件
1. リハビリ時間と入浴時間とが重ならないこと
入浴時間は月曜~土曜で以下の時間で30分ごとに分けられて作られています。
ミスト浴 一般浴
9:30~ 9:30~
10:00~ 10:00~
10:30~ 10:30~
11:00~ 11:00~
13:30~ 13:30~
14:00~ 14:00~
14:30~
2. 理学療法と作業療法と言語療法の時間が重ならないこと
13:40~理学療法を実施する場合は、次のリハビリまで40分または1時間は間隔をあけて
作業療法や言語療法と時間が重ならないこと
3. 処置や検査時間と重ならないこと
8/22 患者A 15:00~歯科
8/23 患者B 16:00~MRI
など
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
どのように作っていけばいいのかと考えているのですが、
・リハビリ時間テーブル
・入浴時間テーブル
・処置・検査時間テーブル
以上を作っていけば作れるのかな・・・と漠然に考えています。
もしできればサンプルとかを頂けると嬉しいのですが・・
とても分かりにくい質問をしてしまい申し訳ありません。
リレーションの設定自体に、日付で降順ソートの指定をして、関連レコードを参照すれば良いでしょう。
Hiro様 ありがとうございます。
リレーションの設定は日付で降順ソートしています。
ということはポータルのテーブルではなくて、レイアウトの元テーブル内に以下の計算フィールドを作らないといけないということでしょうか?
Case ( GNRI < 82 ; "重度栄養障害" ;
GNRI > 82 and GNRI < 91 ; "中等度栄養障害" ;
GNRI > 92 and GNRI < 98 ; "軽度栄養障害" ;
GNRI ≥ 98 ; "リスクなし"
)
今、この計算フィールドは関連テーブル内に作っています。
変なことを言っていたらすいません。
ファイルメーカーで血液データを時系列でポータル表示しています。
日付 ヘモグロビン GNRI
7/23 10.0 98
8/2 9.8 78
このGNRIの数値を使って、GNRIが98以上のなら正常、98未満なら栄養障害というように計算式で振り分けて表示しています。
Case ( GNRI < 82 ; "重度栄養障害" ;
GNRI > 82 and GNRI < 91 ; "中等度栄養障害" ;
GNRI > 92 and GNRI < 98 ; "軽度栄養障害" ;
GNRI ≥ 98 ; "リスクなし"
)
そこで相談なのですが、以上のような計算式を作ると、ポータルで一番最新の日付のGNRIの値を拾って計算をしてくれません。
ここで言うと、8/2のGNRIの値を拾ってくれず7/23の値を使って抽出されてしまいます。
ポータル表示は、日付を昇順でソートしています。
どうすれば、最新の日付のGNRIを使って計算知を抽出できますか?
チポ様
ありがとうございます。
リレーションシップグラフでテーブルを複製してそれで自己リレーションですね。
その照合ですが、
書かれたのに加えて、
部屋の照合も必要なのでは。さらにこのままでは自身とも照合されますので、
関連レコードが1か2以上かで重複の判定になります。
しかし、これはレコード確定後ではないと判定出来ません。ユニークな値のフィールドを ≠ で照合させれば、
レコード確定以前でも判定出来ます。その判定の表示は、
計算フィールドにして、判定結果の表示でもいいでしょうし、
スクリプトトリガでスクリプト実行させ、カスタムダイアログで表示でもいいでしょう。
ポータル表示しているテーブルを複製して自己リレーションするところまでやりました。
分からない点を3点ほど質問させていただいていいでしょうか?
①部屋の照合は必要でしょうか?
予約に使う部屋は1つなので照合はいらないと思うのですが・・・
②あと、「自身とレコードが重複する」というのは、どういうことですか?
同じ名前のスタッフが重複しないようにするということですか?
同じ名前のスタッフが違う時間帯で予約することもあります。
例えば、「佐藤」が10:00~12:00と14:00~15:00といった感じです。
③あと最後に、判定の表示はどのようなスクリプトステップを踏めばいいでしょうか?
今回、このスクリプトステップが分からず相談をさせて頂きました。
すいません。
チポ様
ありがとうございます。
ということは、ポータル表示しているテーブルをもう1つ作って、リレーションすればいいのですかね。
(あまりしっかり理解できていないかもしれませんが。。。)
予定表示ポータル1 予定表示ポータル2
開始時刻 < 終了時刻
終了時刻 > 開始時刻
こうすれば、該当するレコードだけ表示されますかね?
関連レコードが無い場合、ダイヤログボックスで注意喚起できるのでしょうか?
Hiro様 ありがとうございます。
1点質問ですが、このlet関数はスクリプトですか?
スクリプトでlet関数は作れるのでしょうか?
>・「時間帯」計算フィールド(式:開始時間 &","& 終了時間)をポータルテーブルに作っておくこと
これはつくることができました。
その後の、作って頂いた式の運用方法を教えて頂きたいです。
FMpro12を使っています。
あるスクリプトステップを教えてほしいです。
ポータル表示にて、「開始時間」と「終了時間」のフィールドがあります。
この開始時間と終了時間には、ある部屋を予約するために不特定多数のスタッフがこのレイアウトにアクセスして予約を入れます。
例えば、
ポータル標示
「スタッフ名」 「開始時間」 「終了時間」
佐藤 12:00 13:00
後藤 13:10 14:00
今田 15:00 16:00
というように個々のスタッフが部屋を使いたい時間を入力していきます。
日付は今回はいりません。
今回、やりたいのは、開始時間と終了時間で使用する時間帯が他のスタッフと重なってたらダイヤログボックスで「時間が重なっています」という警告表示を表示させたいです。
素人ながら色々考えてみたのですが、終了時間フィールドにスクリプトトリガ設定でOnObjectSaveに「1つの開始時間レコードが他の終了時間レコードよりも前にあったら警告」というスクリプトステップを入れればいいのかなというところまでは考えました。
ポータル表示していて、レコードが複数あるのでどんなスクリプトステップを使えばいいのか分かりません。
「そもそもフィールドの置き方をこうした方がいい」などの意見があればご教授いただきたいです。
考え方が浅はかですが、このスクリプトステップを教えてもらえないでしょうか?
[ Generated in 0.011 seconds, 6 queries executed - Memory usage: 787.24 KiB (Peak: 841.03 KiB) ]