みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
夜分遅くにお邪魔致します
前回はご親切にありがとうございました。
FM18、macOS Catalinaです。宜しくお願い致します。
この度、初めてLoop関数に挑戦を試みておりご相談をさせて頂きます。
目的は該当レコードの番号をポータルに割当てる事です。
テーブル、フィールドの構成は
○タスク管理テーブル
・タスクID
○業務内容テーブル
・タスク外部キー
・選択フラグ(0か1)
・業務部門CD(テキストF)
・ポータル番号(計算F:Choose ( Get(レコード番号) ;"該当なし" ;
"①";"②";"③";"④";"⑤";"⑥";"⑦";"⑧";"⑨";"⑩" ) 、非保存)
○割当テーブル
・タスク外部キー
・作業割当(テキストF)
・担当者
タスクIDと(各々の)タスク外部キーをリレーション
タスク管理Tに業務内容Tと割当Tのポータルを表示し、業務内容Tのフラグにチェックボックスを設定
作業の流れは
Ⅰ.フラグにチェックを入れる
Ⅱ.割当ポータルの「作業割当」にチェックが入った「ポータル番号」を表示(例:①、②、④)
※現在は恥ずかしながら手入力で「作業割当」に「ポータル番号」①〜⑩を入力し表示させています
Ⅱをスクリプトで行うため色々と調べているとLoopに辿り着き、
変数を設定[ $task ; 値: タスク管理 :: タスクID ]
レイアウト切り替え[「業務内容」(業務内容)]
検索モードに切り替え[オフ]
フィールド設定[ 業務内容 :: タスク外部キー ; $task ]
検索実行[ ]
検索モードに切り替え[オフ]
フィールド設定[ 業務内容 :: 業務部門CD ; "*" ]
対象レコードの絞り込み[ ]
レコード/検索条件/ページへ移動[最初の]
Loop
変数を設定[ $portalNo ; 値: 業務内容 :: ポータル番号 ]
フィールド設定[ 割当 :: 作業割当 ; $portalNo ]
レコード/検索条件/ページへ移動[次の ; 最後まできたら終了 : オン ]
End Loop
レイアウト切り替え[ 「タスク管理詳細」(タスク管理)]
オブジェクトへ移動[ オブジェクト名 : "作業割当"]
とステップをやってみましたが
Ⅰ.狙った「担当者」の「作業割当」に値が入らない
Ⅱ.「ポータル番号」の値が上書きされ最後の数字になってしまいます
※「フラグ」の値が1の絞り込みはまだ未対応です
どのように対処すれば良いでしょうか?
そもそもLoopではなくList関数で対処するべきでしょうか?
ご教授頂けると幸いです。
どうぞ宜しくお願い致します。
Offline
何をやりたいのかよく分からないのですが......
「業務内容」ポータルで「選択フラグ」フィールドにチェック(1にした)ポータルの行番号を
「割当」ポータルの「作業割当」フィールドに転記したいということでしょうか?
どのタイミングで「割当」にレコード(ポータル行)は作成されるのですか?
2つのポータルの関係とどのような運用なのか関係性がイマイチ見えません。
「業務内容」は予めレコードが作成された状態になるのですか?
レコード番号は現在の対象レコードに応じて変化しますから計算フィールドで固定値を取得するためには適しません。
Loop関数でなく、Loopスクリプトステップですよね?Loopする関数ならWhileです。
Last edited by Moz (2020-01-26 07:23:01)
Offline
リレーション関係が、正しく成立していないと思いますが。
業務内容ポータルで、各ポータル行が
"該当なし" ;"①";"②";"該当なし";""該当なし";"⑤";"該当なし"";"⑦";"該当なし";"⑨";"該当なし"
となっている場合に、割当ポータルで、作業員が並んでいる順で、同じデータを設定したい、という事でしょうかね。
ポータルの中から、関連レコードへ移動 を行うと、そのポータルの選択範囲、ソート順でそのテーブルが表示されます。それを利用して、
フィールドへ移動(業務内容::業務部門CD)
関連レコードへ移動[業務内容 ]
レイアウトへ移動(元のレイアウト)
フィールドへ移動(割当::作業割当)
関連レコードへ移動[割当 ]
レコードをインポート【業務内容から、作業割当】
レイアウトへ移動(元のレイアウト)
という流れでいけるのではないでしょうか。
Last edited by Shin (2020-01-26 11:30:00)
Offline
割り当てテーブルの「担当者」とは、"タスク"の担当者なのですか?
それとも業務内容テーブルで管理される"業務"の担当者"なのですか?
現状、手動で業務テーブルと割り当てテーブルとを関連づけていることと、
フィールド設定[ 割当 :: 作業割当 ; $portalNo ]
というスクリプトで、業務テーブルのレコードと割り当てテーブルのレコードを関連づけようとしているので、たぶん後者と推測します。
この推測が正しいならば、タスクと割り当てをタスクIDでリレーションするという構造から見直した方が良いと思われます。
Last edited by koeda (2020-01-26 10:34:05)
Offline
みなさま
様々なご意見ありがとうございます!
1つ、補足をさせてください。
ポータルはフィルタをかけています
業務内容ポータル → PatternCount ( 業務内容::業務部門CD ; 業務内容::業務部門CD )
何をやりたいのかよく分からないのですが......
「業務内容」ポータルで「選択フラグ」フィールドにチェック(1にした)ポータルの行番号を
「割当」ポータルの「作業割当」フィールドに転記したいということでしょうか?
どのタイミングで「割当」にレコード(ポータル行)は作成されるのですか?
はい。行いたいのはその通り選択したポータル行を「作業割当」に転記をしたいと考えています。
割当ポータルのレコードは別レイアウトでタスクに参加する人に対して外部キーフィールドへ参加するタスクのIDを入れてポータルに表示されています。
作成タイミングはその際です。
2つのポータルの関係とどのような運用なのか関係性がイマイチ見えません。
「業務内容」は予めレコードが作成された状態になるのですか?
レコード番号は現在の対象レコードに応じて変化しますから計算フィールドで固定値を取得するためには適しません。
お察しの通り予めレコードを作成し、ポータルへ表示させています。
補足でお伝えした通りフィルタをかけているので番号を変えるため計算フィールドにしています。
最初に条件提示が出来ており申し訳ございませんでした。
Shin様・Koeda様
リレーション構造をご指摘いただき有難うございます。
どのように修正すれば良いでしょうか?
ご教示いただけると幸いです。
Offline
1つ、補足をさせてください。
ポータルはフィルタをかけています
業務内容ポータル → PatternCount ( 業務内容::業務部門CD ; 業務内容::業務部門CD )
この条件だと常に1になるのでフィルタとして機能していないのでは?
リレーション構造をご指摘いただき有難うございます。
どのように修正すれば良いでしょうか?
ご教示いただけると幸いです。
#4の私の質問に答えていただけますか?
技術論の前に、業務の流れや情報の構造を正確に把握できないと回答できません。
手順1:1つのタスクに複数の業務を登録する
手順2:1つのタスクに複数の担当者を登録する
手順3:業務と担当者の対応を登録する(今回の課題)
という流れで合ってますか?
具体的には、
業務① 担当者A
業務② 担当者B
業務③ 担当者C
と表示されている時、業務②にチェックを入れたら
業務① ②担当者A
×業務② ②担当者B
業務③ ②担当者C
としたいということ?しかし、最初の質問で「狙った担当者」とあるので違うのかな???
なおMozさんがすでに指摘されているように、Get(レコード番号)は、”いま何番目に表示されているか"という
単なる表示順を示すのみで、検索条件やソート順でコロコロ変化してしまう値なので、
業務レコードを一意に特定するIDとしては適しません。
「業務ID」なりのキーを用意して、それを割り当てテーブルに転記するようにする必要があります。
Last edited by koeda (2020-01-27 08:07:20)
Offline
リレーションは、
タスク管理テーブル 業務内容テーブル
タスクID--- タスク外部キー
タスク管理テーブル 割当テーブル
タスクID--- タスク外部キー
という形になるのかも。
各ポータルに、
業務① 担当者A
業務② 担当者B
業務③ 担当者C
となっていれば、
業務①担当者A
業務②担当者B
業務③担当者C
という設定にしたい、という事でしたら、#3 で示しているスクリプトで実現できるはずです。(ポータルフィルターやソート順も反映されます)
Offline
koeda様・Shin様
お返事頂いたにもかかわらずご連絡が遅くなり申し訳ございませんでした。
また説明が不十分で大変失礼致しました。
サンプルを作成致しましたのでご確認をお願い致します。
https://www.dropbox.com/s/4q9331pp9d4tk … fmp12?dl=0
※ヘッダパートに行いたい作業を記述しております
koeda様
ご質問に回答せず失礼致しました。。
確かにフィルタは完全に機能はしておらずインスペクタで隠している状態です。
作業手順はもし宜しければサンプルファイルをご参照ください。
なおMozさんがすでに指摘されているように、Get(レコード番号)は、”いま何番目に表示されているか"という
単なる表示順を示すのみで、検索条件やソート順でコロコロ変化してしまう値なので、
業務レコードを一意に特定するIDとしては適しません。
「業務ID」なりのキーを用意して、それを割り当てテーブルに転記するようにする必要があります。
ポータル番号Fを「業務ID」Fに転記し作業割当Fに転記するようにすれば良いでしょうか?
Shin様
説明が曖昧で大変失礼しました。
もし宜しければサンプルファイルのご確認をお願い致します。
Offline
□業務①
☑︎業務②
☑︎業務③
の時に、担当者A を指定して、
担当者A ②③ にしたい、という事でしょうか。
それまら、担当者テーブルの中に、作業をチェックボックスで表示させ入力するのが普通では。今の手入力と余り変わりないかもしれませんが。
または、担当者ID を変数に取得しておき、割当テーブルへ作業テーブルのチェックされたレコードをインポートして、担当者ID を設定しておく、という作業でもいいかも
Last edited by Shin (2020-01-29 08:57:32)
Offline
サンプルファイルを拝見しましたが、失礼ながら少しわかりにくい画面のように感じました。
少し整理が必要ではないでしょうか?
1)タスクに業務内容を登録した後、
2)それぞれの業務について、その業務を担当する部門の担当者をポータル等で表示し、チェックボックス等で担当者を選択・指定する
という操作にすれば、タブやボタンを減らし、インターフェースをもっとシンプルにできるのでは?
担当者マスタに業務部門の属性を持たせることはできないのでしょうか?
ポータル番号Fを「業務ID」Fに転記し作業割当Fに転記するようにすれば良いでしょうか?
それも一案ですが、私なら業務IDとは別にシリアル番号を振ってリレーションします。
Offline
Shin様・koeda様
お返事ありがとうございます!!
頂いた案で試行錯誤してみます!
Offline
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 558.7 KiB (Peak: 579.6 KiB) ]