みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
現在、FileMaker Pro 18.3 Advanced を使用しています。
データ管理はドロップダウンカレンダー機能を用い管理しています。
今回行いたいことは、ドロップダウンカレンダー機能で呼び起こされたすべてのデーターシートに対し6週分先(1週後、2週後、3週後、4週後、5週後、6週後の日付に変換したもの)を選択されている元データすべてのものに対し、それぞれ1枚づつ作成し、データとして反映したい。このFileMaker Pro 18.3 Advancedに含まれるスクリプト機能を用いて処理を考えるとき、一連の作業をまとめると、どのようなcodeになりますか?
自分なりに考えたスクリプトは以下のようになりますが、作成したつもりのデータが反映されず困っています。
# 変数を宣言
Set Variable [ $selectedDate ; Value: YourTable::SelectedDate ]
Set Variable [ $weekOffset ; Value: 0 ]
Set Variable [ $maxWeekOffset ; Value: 5 ]
# 選択された日付を1週後から6週後まで変換してレポートを作成
Loop
# 日付を計算
Set Variable [ $targetDate ; Value: $selectedDate + $weekOffset * 7 ]
# レポートを作成
Go to Layout [ “ReportLayout” (YourTable) ]
Enter Find Mode [ Pause: Off ]
Set Field [ YourTable::SelectedDate ; $targetDate ]
Perform Find [ ]
If [ Get(FoundCount) > 0 ]
Print [ Current record ]
End If
# 変数を更新
Set Variable [ $weekOffset ; Value: $weekOffset + 1 ]
Exit Loop If [ $weekOffset > $maxWeekOffset ]
End Loop
どこが間違っているか、ご教示頂ければ幸いです。
Offline
説明の用語が今一FMのものと違うので、何をしたいのかがよくわかりませんが、
スクリプトは「日付に基づいてレコードを検索して、それを印刷する」という内容ですよね。
まず、「ドロップダウンカレンダー機能」というのは、フィールドに日付を入力するときにカレンダーから選択できる、というだけのものです。
「データ管理はドロップダウンカレンダー機能を用い管理しています。」というのはちょっと理解しにくいです。
「呼び起こされたすべてのデーターシート」というところもわかりません。検索したレコード?
「選択されている元データすべてのものに対し、それぞれ1枚づつ作成し」というのもよくわかりません。
現在の対象レコードについて、各1~6週後のレコードを追加したいのですか?
ざっと見た感じではいいと思いますが。デバッガーで動かしてみたら、検索結果はどうなります?
ただ、私なら全然違う方法にします。DayOfWeek という計算フィールドを追加して、
Set Variable [ $targetDate ; Value: YourTable::SelectedDate ]
Set Variable [ $targetDates ; Value: YourTable::SelectedDate & "..." & GetAsDate ( YourTable::SelectedDate + 42 ) ]
Go to Layout [ “ReportLayout” (YourTable) ]
Enter Find Mode [ Pause: Off ]
Set Field [ YourTable::SelectedDate ; $targetDates ]
Set Field [ YourTable::DayOfWeek ; DayOfWeek ( $targetDate ) ]
Perform Find [ ]
Sort ()
としておき、レポートレイアウトに SelectedDate をキーとする小計パートを追加して、改ページ設定をしておきます。
Last edited by Shin (2023-02-22 15:22:23)
Offline
「データとして反映したい」というところが、レコード追加したいように読めたんですけど違うかなあ。
「作成したつもりのデータが反映されず」というのは、もしかしてスクリプトは印刷だけで、レコードを追加は手動でしたつもりだが、実は既存データを書き換えただけだった?
ご回答ありがとうございます。
>説明の用語が今一FMのものと違うので、何をしたいのかがよくわかりませんが、
>スクリプトは「日付に基づいてレコードを検索して、それを印刷する」という内容ですよね。
現在行っていることは約束処方箋で処方内容はほとんど変化しないため、曜日ごとに管理されている複数の患者様の処方を6週間先までデータ(レポート)して残し、それらを印刷することがしたいのです。
>まず、「ドロップダウンカレンダー機能」というのは、フィールドに日付を入力するときにカレンダーから選択できる、というだけのものです。
>「データ管理はドロップダウンカレンダー機能を用い管理しています。」というのはちょっと理解しにくいです。
>「呼び起こされたすべてのデーターシート」というところもわかりません。検索したレコード?
>「選択されている元データすべてのものに対し、それぞれ1枚づつ作成し」というのもよくわかりません。
>現在の対象レコードについて、各1~6週後のレコードを追加したいのですか?
まさにその通りです。レコードを追加し、印刷までしたのです。
ご教示いただければ幸いです。
レコードがすでに追加されているものだと、上の方法でいいでしょうが、レコードを作っていかないといけませんね。
FM のレコードは、単に印刷機能を持たせればいいだけなのか、それとも日毎の処方内容を全て持たせておく必要がありますか。
前者でしたら、曜日で検索して、日付を変数などにもたせておいて、それを変更して印刷していけば十分でしょう。
後者でしたら、印刷の都度、6週間後までのレコードを重複をさけて作り、それを印刷する事になります。その場合、ID を管理するテーブルと、処方を管理する2テーブルにすると簡単です。ID を管理するテーブルに、来週から6週間分の日付を保たせた繰り返しフィールドを作ります。処方内容は、処方管理テーブルでIDで自己リレーションし、日付で降べきにソートしておきます。その内容をルックアップするように設定します。処方テーブルで曜日(本日かな)で検索して、IDテーブルに関連レコード移動します。処方テーブルに戻り、IDテーブルのレコードを繰り返しフィールドを個別になるようにインポートします。これで、6週間分のレコードが作成できます。
https://www.dropbox.com/s/fi9macawq7gru … 2.zip?dl=0
Last edited by Shin (2023-02-22 18:24:58)
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 518.34 KiB (Peak: 523.25 KiB) ]