レコードに応じてタスクモードを切替えたい
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
毎々お世話になります。
過去記事を参照したつもりですが、既に記載すみでしたら申し訳ありません
メインデータソースに指定して参照したデータの区分に応じてタスクの照会モード・修正モードを切り替えたいです。
このような場合、別タスクを作成するしかないでしょうか
レコード後でタスクのモードを切り替える処理は実現できないでしょうか
過去記事を参照したつもりですが、既に記載すみでしたら申し訳ありません
メインデータソースに指定して参照したデータの区分に応じてタスクの照会モード・修正モードを切り替えたいです。
このような場合、別タスクを作成するしかないでしょうか
レコード後でタスクのモードを切り替える処理は実現できないでしょうか
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは
おそらく別TASKしないと判定できないと思います。
間違ってたらスミマセン
私なら迷わずそうしますが
でわ〜でわ〜
おそらく別TASKしないと判定できないと思います。
間違ってたらスミマセン
私なら迷わずそうしますが
でわ〜でわ〜
投票数:1
平均点:10.00
pu_mahalo
居住地: 大阪
投稿数: 775
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
こんにちは そういう意味での別taskではなく
親task(バッチでレコードをread)
判別して
┗子task(オンライン入力)のモードを式で切り替える
このような処理を想定しています
このような方法を使う事で子taskのオンラインは1つでok
この手の方法は良く使います。(照会、登録、修正等)
でわ〜でわ〜
親task(バッチでレコードをread)
判別して
┗子task(オンライン入力)のモードを式で切り替える
このような処理を想定しています
このような方法を使う事で子taskのオンラインは1つでok
この手の方法は良く使います。(照会、登録、修正等)
でわ〜でわ〜
投票数:2
平均点:10.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
pu_mahaloさん
返信ありがとうございます。
「迷わず」ですか、やはりそうなんですね・・
画面項目が多いので、別タスクにするとなるとちょっと工数がかかるなあ・・
返信ありがとうございます。
「迷わず」ですか、やはりそうなんですね・・
画面項目が多いので、別タスクにするとなるとちょっと工数がかかるなあ・・
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
OSK様のご質問はおそらくオンラインタスク
の話をされているのだと思いますが
オンラインタスクで
レコード後処理に突入しているという事は
データを書き換えている最中なので
レコード後処理の途中で、照会/修正を
切り替える事は出来ないと思います。
修正モードのオンラインタスク実行中に
照会モードへ切り替えるとか
その逆は以下で可能です。
イベント実行 (I=内部イベント) 照会(Q)
は、照会モードへ切り替えるイベントです。
イベント実行 (I=内部イベント) 修正(M)
は、修正モードへ切り替えるイベントです。
STAT(0,'Q'MODE)・・・照会モード中ですか?
STAT(0,'M'MODE)・・・修正モード中ですか?
NOT( STAT(0,'Q'MODE) )
NOT( STAT(0,'M'MODE) )
----------
オンラインタスクに入る前に、修正可否を把握出来ている
のであれば、タスク特性の初期モードを
E=式 if(条件,'Q'MODE,'M'MODE) のようにすると
照会モードで実行するか、修正モードで実行するか
指定可能です。
の話をされているのだと思いますが
オンラインタスクで
レコード後処理に突入しているという事は
データを書き換えている最中なので
レコード後処理の途中で、照会/修正を
切り替える事は出来ないと思います。
修正モードのオンラインタスク実行中に
照会モードへ切り替えるとか
その逆は以下で可能です。
イベント実行 (I=内部イベント) 照会(Q)
は、照会モードへ切り替えるイベントです。
イベント実行 (I=内部イベント) 修正(M)
は、修正モードへ切り替えるイベントです。
STAT(0,'Q'MODE)・・・照会モード中ですか?
STAT(0,'M'MODE)・・・修正モード中ですか?
NOT( STAT(0,'Q'MODE) )
NOT( STAT(0,'M'MODE) )
----------
オンラインタスクに入る前に、修正可否を把握出来ている
のであれば、タスク特性の初期モードを
E=式 if(条件,'Q'MODE,'M'MODE) のようにすると
照会モードで実行するか、修正モードで実行するか
指定可能です。
投票数:1
平均点:10.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
モードを切り替える方法ではありませんが項目の修正許可とかレコード後処理でエラー表示させるとかではだめでしょうか
投票数:1
平均点:10.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
みなさん コメントありがとうございます。
説明不足だったようですみません
画面にグリッドと画面項目(50個程度)を配置して、グリッドには主キーとなる項目を表示
表示したデータに応じて画面で項目を修正/照会したい
という感じです。
nkmt さんの言うとおり
レコード後でイベント実行 (I=内部イベント) 照会(Q)をやってみたところ、UniPaaSが応答なしになります・・
何か設定が漏れているんでしょうか
ISHIJIMA さんの言うとおり、レコード後処理で「更新できません」エラーを表示させるのが一番手軽そうですが
画面モードが修正なので(画面右下に「修正」と出ているので)、ユーザにとっては操作性が悪いかなと思っています。
が、他に手段が無いのであれば、こうするしかないかなと考えています。
説明不足だったようですみません
画面にグリッドと画面項目(50個程度)を配置して、グリッドには主キーとなる項目を表示
表示したデータに応じて画面で項目を修正/照会したい
という感じです。
nkmt さんの言うとおり
レコード後でイベント実行 (I=内部イベント) 照会(Q)をやってみたところ、UniPaaSが応答なしになります・・
何か設定が漏れているんでしょうか
ISHIJIMA さんの言うとおり、レコード後処理で「更新できません」エラーを表示させるのが一番手軽そうですが
画面モードが修正なので(画面右下に「修正」と出ているので)、ユーザにとっては操作性が悪いかなと思っています。
が、他に手段が無いのであれば、こうするしかないかなと考えています。
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
画面上半分には、グリッドでデータ一覧表示
画面下には、その中身を表示(修正/照会)
といった処理を作られているのかな?と想像したところです。
項目一つ一つには 修正許可設定はありますので
制御は出来ますが
画面右下の「修正」と表示されている、そこは気にしないで
ください とユーザーさんには説明するといいのでしょうね。
・修正モードのまま、項目を修正許可=NGにするか
・照会モードへ切り替える
事で修正不可には出来ます。
レコード後処理で 照会モード切替を行うと
アボートするのは想像出来ます。
画面下には、その中身を表示(修正/照会)
といった処理を作られているのかな?と想像したところです。
項目一つ一つには 修正許可設定はありますので
制御は出来ますが
画面右下の「修正」と表示されている、そこは気にしないで
ください とユーザーさんには説明するといいのでしょうね。
・修正モードのまま、項目を修正許可=NGにするか
・照会モードへ切り替える
事で修正不可には出来ます。
レコード後処理で 照会モード切替を行うと
アボートするのは想像出来ます。
投票数:2
平均点:10.00
fjksudou
投稿数: 180
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
oskさん
こんにちは
「私だったら」ということで参考までに。
pu_mahaloさんと同じか近い方法になります。
親タスクを追加し、無限ループにし、タスク終了条件に終了フラグを設定します。
子のオンラインのフォーム消去を「No」にします。
タスク特性の初期モードを「式」で設定します。
オンラインタスクでイベントを取得し、モード変更の場合は終了イベントを実行するとモードが変更できます。
必要に応じて位置付けを設定します。
なお、
この方法は、SQLコマンドでビュー再表示が使用できない場合にも使用できます。
こんにちは
「私だったら」ということで参考までに。
pu_mahaloさんと同じか近い方法になります。
親タスクを追加し、無限ループにし、タスク終了条件に終了フラグを設定します。
子のオンラインのフォーム消去を「No」にします。
タスク特性の初期モードを「式」で設定します。
オンラインタスクでイベントを取得し、モード変更の場合は終了イベントを実行するとモードが変更できます。
必要に応じて位置付けを設定します。
なお、
この方法は、SQLコマンドでビュー再表示が使用できない場合にも使用できます。
投票数:1
平均点:10.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
レコード前でイベント実行 (I=内部イベント) 照会(Q)はどうなりますか?
投票数:1
平均点:10.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
nkmtさん コメントありがとうございます
>画面上半分には、グリッドでデータ一覧表示
>画面下には、その中身を表示(修正/照会)
>といった処理を作られているのかな?と想像したところです。
まさにそんな感じです!
なるほど、項目のプロパティで制御するのですね
その手もありますね
>レコード後処理で 照会モード切替を行うと
>アボートするのは想像出来ます。
モード切替はタスクに入る前にやるしかないんでしょうか
レコードを読んで、レコードの区分に応じて切替えたいのでモード切替は難しいかもしれないです
>画面上半分には、グリッドでデータ一覧表示
>画面下には、その中身を表示(修正/照会)
>といった処理を作られているのかな?と想像したところです。
まさにそんな感じです!
なるほど、項目のプロパティで制御するのですね
その手もありますね
>レコード後処理で 照会モード切替を行うと
>アボートするのは想像出来ます。
モード切替はタスクに入る前にやるしかないんでしょうか
レコードを読んで、レコードの区分に応じて切替えたいのでモード切替は難しいかもしれないです
投票数:1
平均点:10.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
引用:
タスクに入ってからもモード切替は可能です。
1番最初にパークする項目のコントロール前処理
あるいはレコード前処理で
イベント実行 修正(M) 条件=NOT(STAT(0,'M'MODE)) AND 修正してもいい状態
イベント実行 照会(Q) 条件=NOT(STAT(0,'Q'MODE)) AND 修正してはいけない状態
oskさんは書きました:
nkmtさん コメントありがとうございます
>画面上半分には、グリッドでデータ一覧表示
>画面下には、その中身を表示(修正/照会)
>といった処理を作られているのかな?と想像したところです。
まさにそんな感じです!
なるほど、項目のプロパティで制御するのですね
その手もありますね
>レコード後処理で 照会モード切替を行うと
>アボートするのは想像出来ます。
モード切替はタスクに入る前にやるしかないんでしょうか
レコードを読んで、レコードの区分に応じて切替えたいのでモード切替は難しいかもしれないです
タスクに入ってからもモード切替は可能です。
1番最初にパークする項目のコントロール前処理
あるいはレコード前処理で
イベント実行 修正(M) 条件=NOT(STAT(0,'M'MODE)) AND 修正してもいい状態
イベント実行 照会(Q) 条件=NOT(STAT(0,'Q'MODE)) AND 修正してはいけない状態
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
fjksudou さん コメントありがとうございます。
>親タスクを追加し、無限ループにし、タスク終了条件に終了フラグを設定します。
なるほど!です。
ただ、頭では想像できるんですが、難易度が高そう(高度なテクニックが必要そうで)、magic初心者の私が試すと新たな穴にはまってしまいそうです。
もう少しスキルがついたら試してみようと思います。
折角助言頂いたのにすみません、きちんとメモしておきます。
>親タスクを追加し、無限ループにし、タスク終了条件に終了フラグを設定します。
なるほど!です。
ただ、頭では想像できるんですが、難易度が高そう(高度なテクニックが必要そうで)、magic初心者の私が試すと新たな穴にはまってしまいそうです。
もう少しスキルがついたら試してみようと思います。
折角助言頂いたのにすみません、きちんとメモしておきます。
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
>レコード前でイベント実行 (I=内部イベント) 照会(Q)はどうなりますか?
レコード(=データ)の区分に応じてモードを切替えたいので、レコード前では判定出来ないのではと思っていました。
初心者のため、認識誤りがありましたらすみません
レコード(=データ)の区分に応じてモードを切替えたいので、レコード前では判定出来ないのではと思っていました。
初心者のため、認識誤りがありましたらすみません
投票数:0
平均点:0.00
nkmt
投稿数: 1668
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
引用:
これは今思ったのですが、以前のMagicのオンラインタスクには
レコードメインという物が有りました。
その前後という事で
タスク前
レコード前
レコードメイン
レコード後
タスク後 という名前になっているのだと思います。
レコード前という名前ですが、データは読み込んでおり
データの中身も取得可能です。
レコード前処理に
アクション 式=DELAY(1)などを1行追加し
その行で F9キーを押して、ブレイクポイントを設定します。
デバッグモードで実行し、そこで止まった時に
表示 → 項目 といったようにすれば
データの中身を見る事も出来ます。
oskさんは書きました:
>レコード前でイベント実行 (I=内部イベント) 照会(Q)はどうなりますか?
レコード(=データ)の区分に応じてモードを切替えたいので、レコード前では判定出来ないのではと思っていました。
初心者のため、認識誤りがありましたらすみません
これは今思ったのですが、以前のMagicのオンラインタスクには
レコードメインという物が有りました。
その前後という事で
タスク前
レコード前
レコードメイン
レコード後
タスク後 という名前になっているのだと思います。
レコード前という名前ですが、データは読み込んでおり
データの中身も取得可能です。
レコード前処理に
アクション 式=DELAY(1)などを1行追加し
その行で F9キーを押して、ブレイクポイントを設定します。
デバッグモードで実行し、そこで止まった時に
表示 → 項目 といったようにすれば
データの中身を見る事も出来ます。
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
みなさま、色々な案を提案頂き誠にありがとうございます。
試してみたい案も多かったのですが、私の力不足のため、納期逼迫のため、これ以上検討のために時間を裂くのが難しく、
一番工数少なく実現するためにレコード後で「該当のデータは更新できません」エラーを表示させることにしました。
こうすると、ユーザ的には更新可であるデータと更新不可能なデータの判別がつかないため
画面に表示しているキー項目のみ、更新可能かどうかで画面項目の背景色を変えることにしました。
コメント頂いたみなさま、色々とご指導頂きありがとうございました。
試してみたい案も多かったのですが、私の力不足のため、納期逼迫のため、これ以上検討のために時間を裂くのが難しく、
一番工数少なく実現するためにレコード後で「該当のデータは更新できません」エラーを表示させることにしました。
こうすると、ユーザ的には更新可であるデータと更新不可能なデータの判別がつかないため
画面に表示しているキー項目のみ、更新可能かどうかで画面項目の背景色を変えることにしました。
コメント頂いたみなさま、色々とご指導頂きありがとうございました。
投票数:0
平均点:0.00
osk
投稿数: 75
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
nkmt さん
丁寧にコメントありがとうございます。
(しばらく見ていませんでした、コメント頂いていたのに失礼しました。)
コントロール前処理というのを初めて知りました
機会があれば試してみたいと思います
ありがとうございました。
丁寧にコメントありがとうございます。
(しばらく見ていませんでした、コメント頂いていたのに失礼しました。)
コントロール前処理というのを初めて知りました
機会があれば試してみたいと思います
ありがとうございました。
投票数:0
平均点:0.00