みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Shin様 サンプルまで作成していただきありがとうございます
自分でも試行錯誤して、新たにリレーションを張らずに
値一覧「患者ID」にて
最初のフィールドに【患者ID】、2番目のフィールドに【検査ID】
2番目のフィールドの値のみを表示にチェックすることで
GetValue(ValueListItems(Get(ファイル名) ; "患者ID"); Get(計算式繰り返し位置番号))
を使って計算させることができ、昨日の新たなリレーションを用いたものと同じ結果を得られるということを確認できたところです。
同一レコードに検査IDと患者IDを持っていて
繰り返しフィールド
|検査ID1||検査ID2||検査ID3||検査ID4|・・・・・ と作ったときに
自己リレーションか何かうまい関数を使って
|患者ID1||患者ID2||患者ID3||患者ID4|・・・・・
とできないかなぁ と思って今回の質問をさせていただきました
これから作っていただいたサンプルをみて勉強させていただきます
繰り返しフィールドもクロス集計もあまり経験がないので
これを機に理解を深めます
ありがとうございました
Shin様 ご返信ありがとうございます
検査結果と同じリレーションとルックアップ関数で計算すると、虫食いのような結果になりました。
おそらく患者ごとに採血項目が違うことに由来すると考えます。
検査項目に依らない新たなリレーションを張って同様にすることで解決しました。
力技しかないのかしら
filemaker server13とfilemaker pro13 の環境下で作業しています
採血データーをクロス集計で表示することに挑戦しています
リレーションとルックアップ関数を用いた手法を参考にしています
採血データーのテーブルは
・シリアルナンバー
・検査ID
・患者ID
・日付
・採血項目(白血球数などの項目)
・採血結果(数値やテキスト)
で構成しています
1項目1レコードとしていますので、1患者1検査あたり40レコード程あります
【任意の日付】の【横軸に検査ID】【縦軸に採血項目】の採血結果をクロス集計表示したいので
横軸の検査IDを繰り返しフィールド・計算
GetValue(ValueListItems(Get(ファイル名) ; "検査ID"); Get(計算式繰り返し位置番号))
として値一覧を用いて代入したとき
それに対応した患者IDを繰り返しフィールドに表示したいのです
検査IDと同様に値一覧を用いると同一患者が同一日に複数回採血をすることもあるので不適です
何か良い関数がありそうな気がするのですがわかりません
教えていただけますか
どうぞよろしくお願い致します
私の環境ではserver13 にFileMakerGo15からアクセスできています。
Go16からはできませんでした。
serverを最新の13にするとGo16からアクセスできるらしいとどこかで読んだ気がします。
書いてあることだけを実現するなら
レイアウトモードで触らせたくないフィールドのインスペクタ>データ>フィールド入力のブラウズモード
のチェックはずす
※フィールドa・b・cはフィールドBに付随 がよくわからないし
フィールドA、フィールドB、フィールドa、フィールドb、フィールドcを勝手にテキストだと思ってるけど
ダラダラcaseで書くことはできるけど、結局のところ
フィールドA & フィールドB & フィールドa & フィールドb & フィールドc
なんじゃないかと
検索する日付を入力するグローバルフィールドを作って
その日付とフィールド1・フィールド2・フィールド3と同じなら1を返すような計算フィールドのようなものを作って
計算フィールドが1のレコードだけを表示すればよいよ きっと
9月は30日までだから1人あたり31行だったけど
10月はもしかすると違うかもね
インポート用のテーブルを作ってフィールド1〜8まで用意する
とりあえず全部インポートしちゃう
スプリクト
最初のレコードに移動
loop
7番目のフィールドが空だったら5番目のフィールドを変数に入れとく
変数を8番目のフィールドに入れる
次のレコードに移動(最後まで来たら終了)
loop end
7番目のフィールドが空のレコードを検索して削除する
本テーブルにインポートしてインポート用のレコード全削除
こんな感じだよきっと
filemakerのテクニカルな部分は達者な方におまかせしますが
似たような職場環境にある者からのつぶやき程度に流してください
日付を赤くすることで気がつかない担当者は、ダイアログを出してもきっと[ok]連打で見ない
「14日以内になると日付を赤くする」といった赤を警告色として用いるなら担当者名や患者名には赤は使わないほうが良い
「白地に赤」にするより「赤地に白」の方がこのスクショなら目立つ
警告には日付だけじゃなく患者名なども警告色にした方がより目立つ
あと何日かを意味するカウントダウンする数字を表示する
作成せずに過ぎてしまった書類は、他者にバレるようにする
私ならレイアウトやデザインで注意喚起します
スルーしていただいて構いません…
ちなみに
最初に
変数を設定 $name=""
ループの中に
14日以内だったら $name=$name & テーブル1:患者名 & "改行マーク"
でループの外に
カスタムダイアログ $name &"の期限が迫っています"
的な感じじゃないでしょうか
その例えのとおりなら 日付を7で割った商に1たせば良いかもね
レイアウトがそれぞれあって、それぞれに印刷スクリプトが仕込んだボタンがあるなら
1.スプリクト引数に”初”とか"1"とか持たせて
2.今実行してるスプリクトの中で get(スプリクト引数)で取得して
3.改行と一緒にして保存
ってやるかな私なら
自己リレーションして
リレーションされる側のを点検日付で降べきでソートして
ルックアップで自動入力
そんな感じで良いのではないかしら
普通に速いPCと激遅のPCで同じ共有ファイルを開いてみて
ファイル>管理>外部データソース
記述が同じか確認できますか?
リレーションする側【テーブルB】からリレーションされる側【テーブルA】をアイテムでリレーションして
テーブルAのソートを入力日降順にすれば
とりあえずお望みのものを拾うと思うよ
本日分を含まない(過去日のみ)を実現するなら
リレーションする側に本日の情報を持つフィールドを作って
本日フィールド>入力日 の条件をリレーションに追加すれば良いよ
Shin様、チポ様
この度はお知恵をお貸しいただいてありがとうございました
何とか実現できましたので報告させていただきます
チポ様案(改)的な手法です
1 採血テーブルに「項目がALB,T-CHO,LYMPHOのときに1が入る」計算フィールドAを作成
2 採血テーブルを自己リレーション
患者ID = 患者ID
and 採血日 = 採血日
and A = A
3 採血テーブルに count(自己リレーション::患者ID) の計算フィールドBを作成 → 同一患者,同一日,3項目のとき3になる
4 別テーブルから患者IDで採血テーブルとリレーション
ポータルを作ってポータルフィルタ(B=3)、ソート日付降順にて表示
おそらくこれで相談に応えられたと思っています
ありがとうございました
Shin様
サンプルまでご提示していただきましてありがとうございます
これから一日かけて勉強させていただきます
上記についてお知恵をお貸し下さい
サーバー:win8 filemakerserver13
クライアント:win7〜10,mac filemakerpro13
の環境下で採血データを管理しています
採血データのテーブルは
患者ID , 採血日 , 項目 , 結果
という1項目1レコードで運用しています
(1度の採血で30項目の検査が行われると、30レコード作成しています)
この度、リハビリテーションと栄養の指標として
項目:ALB , T-CHO , LYMPHO (アルブミン、総コレステロール、リンパ球数)
の3項目が同日に行われた直近の採血日と、それぞれの検査結果を得たい
との相談を受けたのですが、全くアイデアが浮かびません
患者によっては3項目を同日に検査していないケースもあります(その場合はnullで構いません)
例えば ALB の項目を調べた日には必ず T-CHOとLYMPHOもあるといった規則性もありません
あくまでも、たまたま3項目が存在していた直近の検査日とそれらの検査結果を得たいのです
実際には別テーブルからリレーションを組んで、別テーブルに表示させたいと考えています
表示の方法は、単純に日付と3つの検査値が示せれば、新たな計算フィールドでもポータルでも何でも構いません
どうか皆様のお知恵をお貸し下さい
よろしくお願いします
下のポータルのポータルフィルタに
商品情報::預かりチェックボックス="預かり"
でいいのかなぁ
レイアウトをコピーしちゃって
確定か未確定のフラグでレイアウト変更するようにして
確定用レイアウトの変更させたくないフィールドの【ブラウズモードでのフィールド入力】のチェックを外すってのはユルイでしょうか
ご報告
教えていただいた「FMEasySync 」を使って、イメージしていたものを作ることができました。
英語のdocしかありませんでしたので少々難儀しましたが、何とかなりました。
時間ができたら日本語でどこかにメモとして残しておこうと考えています。
どうもありがとうございました
\(^o^)/
皆様ありがとうございます
正直簡単に考えていましたが、ハードでビックリしています。
教えていただいたものを一読し、おぼろげながらすべき事を理解しました。
自作するにはハードルが高いので
「FMEasySync 」を使ってチャレンジしてみます。
何かご報告できることがあれば、またここに書き込みます。
今後ともよろしくお願いします。
win8:filemakerserver13
win7数台:filemakrpro13
上記環境にて運用しています。
今回、入力デバイスとして
iOSのfilemakergoを試用しているのですが
goより直接filemakerserverのデータにアクセスすると
もっさり感でかなりストレスを感じます。
そこで入力デバイスをgoに限定し、入力用ファイルをgoに(iTunesなどから)持たせ
入力の都度、スクリプトなどを用いてfilemakerserverにも書き込みたい(同期をとりたい)のですが
どのようなスクリプトを書けば良いのかわかりません。
確定時に「送信」ボタンを押すとserverにも書き込まれるイメージです。
どうぞお知恵をおかし下さい。よろしくお願いします。
serverのデータはfilemakeproにて集計などに用いますが、proからはレコードの新規作成などしない、goは1台での運用です。
そのボタンで何をするのかはわからないけど
スプリクトAの後に自動的に実行してはダメなの?
僕ならベタに
別の計算フィールドを作成して
Middle ( date ; 1 ; 4) & "/" & Middle ( date ; 5 ; 2) & "/" & Middle ( date ; 7 ; 2)
計算結果を日付にする
って感じかなぁ
Pages: 1
[ Generated in 0.027 seconds, 8 queries executed - Memory usage: 643.41 KiB (Peak: 680.7 KiB) ]