ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

レコードに応じてタスクモードを切替えたい

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2018-1-9 11:31
osk  一人前   投稿数: 75
nkmt さん

丁寧にコメントありがとうございます。
(しばらく見ていませんでした、コメント頂いていたのに失礼しました。)

コントロール前処理というのを初めて知りました
機会があれば試してみたいと思います
ありがとうございました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-16 17:21
nkmt  長老   投稿数: 1668
引用:

oskさんは書きました:
>レコード前でイベント実行 (I=内部イベント) 照会(Q)はどうなりますか?
レコード(=データ)の区分に応じてモードを切替えたいので、レコード前では判定出来ないのではと思っていました。
初心者のため、認識誤りがありましたらすみません

これは今思ったのですが、以前のMagicのオンラインタスクには
レコードメインという物が有りました。
その前後という事で
タスク前
レコード前
レコードメイン
レコード後
タスク後 という名前になっているのだと思います。

レコード前という名前ですが、データは読み込んでおり
データの中身も取得可能です。

レコード前処理に
アクション 式=DELAY(1)などを1行追加し
その行で F9キーを押して、ブレイクポイントを設定します。

デバッグモードで実行し、そこで止まった時に
表示 → 項目 といったようにすれば
データの中身を見る事も出来ます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-16 17:15
nkmt  長老   投稿数: 1668
引用:

oskさんは書きました:
nkmtさん コメントありがとうございます


>画面上半分には、グリッドでデータ一覧表示
>画面下には、その中身を表示(修正/照会)
>といった処理を作られているのかな?と想像したところです。
まさにそんな感じです!

なるほど、項目のプロパティで制御するのですね
その手もありますね

>レコード後処理で 照会モード切替を行うと
>アボートするのは想像出来ます。
モード切替はタスクに入る前にやるしかないんでしょうか
レコードを読んで、レコードの区分に応じて切替えたいのでモード切替は難しいかもしれないです




タスクに入ってからもモード切替は可能です。

1番最初にパークする項目のコントロール前処理
あるいはレコード前処理で

イベント実行 修正(M) 条件=NOT(STAT(0,'M'MODE)) AND 修正してもいい状態

イベント実行 照会(Q) 条件=NOT(STAT(0,'Q'MODE)) AND 修正してはいけない状態


投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-16 14:18
osk  一人前   投稿数: 75
みなさま、色々な案を提案頂き誠にありがとうございます。

試してみたい案も多かったのですが、私の力不足のため、納期逼迫のため、これ以上検討のために時間を裂くのが難しく、
一番工数少なく実現するためにレコード後で「該当のデータは更新できません」エラーを表示させることにしました。
こうすると、ユーザ的には更新可であるデータと更新不可能なデータの判別がつかないため
画面に表示しているキー項目のみ、更新可能かどうかで画面項目の背景色を変えることにしました。

コメント頂いたみなさま、色々とご指導頂きありがとうございました。


投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-12-16 11:48
osk  一人前   投稿数: 75
>レコード前でイベント実行 (I=内部イベント) 照会(Q)はどうなりますか?
レコード(=データ)の区分に応じてモードを切替えたいので、レコード前では判定出来ないのではと思っていました。
初心者のため、認識誤りがありましたらすみません
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-16 11:32
osk  一人前   投稿数: 75
fjksudou さん コメントありがとうございます。

>親タスクを追加し、無限ループにし、タスク終了条件に終了フラグを設定します。
なるほど!です。
ただ、頭では想像できるんですが、難易度が高そう(高度なテクニックが必要そうで)、magic初心者の私が試すと新たな穴にはまってしまいそうです。
もう少しスキルがついたら試してみようと思います。
折角助言頂いたのにすみません、きちんとメモしておきます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-12-16 11:29
osk  一人前   投稿数: 75
nkmtさん コメントありがとうございます


>画面上半分には、グリッドでデータ一覧表示
>画面下には、その中身を表示(修正/照会)
>といった処理を作られているのかな?と想像したところです。
まさにそんな感じです!

なるほど、項目のプロパティで制御するのですね
その手もありますね

>レコード後処理で 照会モード切替を行うと
>アボートするのは想像出来ます。
モード切替はタスクに入る前にやるしかないんでしょうか
レコードを読んで、レコードの区分に応じて切替えたいのでモード切替は難しいかもしれないです


投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-15 15:03
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
レコード前でイベント実行 (I=内部イベント) 照会(Q)はどうなりますか?
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-15 13:31
fjksudou  長老   投稿数: 180
oskさん
こんにちは

「私だったら」ということで参考までに。

pu_mahaloさんと同じか近い方法になります。

親タスクを追加し、無限ループにし、タスク終了条件に終了フラグを設定します。

子のオンラインのフォーム消去を「No」にします。
タスク特性の初期モードを「式」で設定します。

オンラインタスクでイベントを取得し、モード変更の場合は終了イベントを実行するとモードが変更できます。
必要に応じて位置付けを設定します。

なお、
この方法は、SQLコマンドでビュー再表示が使用できない場合にも使用できます。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-15 12:53 | 最終変更
nkmt  長老   投稿数: 1668
画面上半分には、グリッドでデータ一覧表示
画面下には、その中身を表示(修正/照会)
といった処理を作られているのかな?と想像したところです。


項目一つ一つには 修正許可設定はありますので
制御は出来ますが
画面右下の「修正」と表示されている、そこは気にしないで
ください とユーザーさんには説明するといいのでしょうね。

・修正モードのまま、項目を修正許可=NGにするか
・照会モードへ切り替える
事で修正不可には出来ます。

レコード後処理で 照会モード切替を行うと
アボートするのは想像出来ます。
投票数:2 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-15 11:13
osk  一人前   投稿数: 75
みなさん コメントありがとうございます。

説明不足だったようですみません
画面にグリッドと画面項目(50個程度)を配置して、グリッドには主キーとなる項目を表示
表示したデータに応じて画面で項目を修正/照会したい
という感じです。

nkmt さんの言うとおり
レコード後でイベント実行 (I=内部イベント) 照会(Q)をやってみたところ、UniPaaSが応答なしになります・・
何か設定が漏れているんでしょうか

ISHIJIMA さんの言うとおり、レコード後処理で「更新できません」エラーを表示させるのが一番手軽そうですが
画面モードが修正なので(画面右下に「修正」と出ているので)、ユーザにとっては操作性が悪いかなと思っています。
が、他に手段が無いのであれば、こうするしかないかなと考えています。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-14 23:42
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは そういう意味での別taskではなく

親task(バッチでレコードをread)
 判別して
 ┗子task(オンライン入力)のモードを式で切り替える

このような処理を想定しています
このような方法を使う事で子taskのオンラインは1つでok
この手の方法は良く使います。(照会、登録、修正等)
でわ〜でわ〜
投票数:2 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-14 22:24
ISHIJIMA  長老 居住地: 静岡県  投稿数: 1827
モードを切り替える方法ではありませんが項目の修正許可とかレコード後処理でエラー表示させるとかではだめでしょうか
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-14 22:16 | 最終変更
nkmt  長老   投稿数: 1668
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) のようにすると
照会モードで実行するか、修正モードで実行するか
指定可能です。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-12-14 21:55
osk  一人前   投稿数: 75
pu_mahaloさん
返信ありがとうございます。

「迷わず」ですか、やはりそうなんですね・・
画面項目が多いので、別タスクにするとなるとちょっと工数がかかるなあ・・
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-12-14 21:23
pu_mahalo  長老 居住地: 大阪  投稿数: 775
こんにちは

おそらく別TASKしないと判定できないと思います。
間違ってたらスミマセン
私なら迷わずそうしますが
でわ〜でわ〜
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 .7 .8 .9 .10 .11 .12 .13 | 投稿日時 2017-12-14 20:24
osk  一人前   投稿数: 75
毎々お世話になります。

過去記事を参照したつもりですが、既に記載すみでしたら申し訳ありません
メインデータソースに指定して参照したデータの区分に応じてタスクの照会モード・修正モードを切り替えたいです。
このような場合、別タスクを作成するしかないでしょうか
レコード後でタスクのモードを切り替える処理は実現できないでしょうか
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約