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

パスワード:


パスワード紛失

サブフォームから親タスクへ戻れないように出来ないか?

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 .7 .8 | 投稿日時 2017-8-4 14:52
nkmt  長老   投稿数: 1668
いつもお世話になっております。
教えてください。

オンラインタスクに、サブフォームを用意しました。

サブフォームには、メインソースを指定した
表形式での入力&保存を行うタスクを設定。

 トランザクションモードを D=遅延
 トランザクション開始を T=タスク前の前

サブフォーム側でデータ入力などしている時、
親タスクをマウスクリック出来ないように
する方法は無いでしょうか?

複数行編集して、ボタン操作などにより
全部保存か、全部キャンセル を実現したいのですが
Escで入力タスクを終えるか親タスクマウスクリックで
全保存に当然なってしまう為です。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 16:02
Tanda  長老   投稿数: 2151
心配いらないですよ。

ネストになっていない限り、親のトランザクションが効きます。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 16:09
nkmt  長老   投稿数: 1668
Tandaさん、レスありがとうございます。

説明が漏れておりました。

親タスクは、単なる条件指定タスクです。

子タスクサブフォーム側だけが、データの入力&保存等です。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 16:14
Tanda  長老   投稿数: 2151
どんな形の親でもトランザクションを親で開始していれば、
そのトランザクションが効きますよ。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 16:17 | 最終変更
nkmt  長老   投稿数: 1668
親タスク(トランザクション無し)範囲指定のみ

 子タスク(遅延トラン)
  親で範囲指定したデータのみ表示
  データメンテ
  ALL保存 or ALLキャンセル を選択して
  条件指定タスクに戻りたい。

けど、子タスクでデータエントリーして
親タスクをクリックで、無条件に ALL保存になるのを
避けられないかな!と。。。

条件指定タスクと
データ入力タスクとウィンドウは分けて
モーダルウィンドウ起動する以外、
全保存/全キャンセルは実現出来ないですかね???
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 16:29
Tanda  長老   投稿数: 2151
プログラムの作法は別として、親タスクでトランザクションを開始
すれば、子タスクで行った作業にもトランザクションが効きますよ。
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 16:46
Tanda  長老   投稿数: 2151
Magicのセミナーでは、「メニュー等のタスクにはトランザクション
は掛けるな、子でコミットができなくなるから」と教えていますが、
nkmtさんの場合は、まさにこれを逆手に取れば、応用が利くパターン
ですね。

つまり、条件検索タスクでトランザクションを開始してやれば、
子のコミットは、条件検索タスク上で操作できるという典型のパターン
です。

ただし、このプログラミング作法が適切かどうかは別ですが。
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 16:59
Tanda  長老   投稿数: 2151
2008年3月にMSJからリリースされたドキュメントに、「Magic
eDeveloper V10 遅延トランザクション」というのがありますが、
これはとても参考になりますよ。

遅延トランザクションについてのことがほぼ全て網羅されて
います。今でもMSJのサイトからダウンロードできると思います。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 16:29
fjksudou  長老   投稿数: 180
モーダルではダメなのですね…。

親タスクのクリック無効は
サブ側でウィンドウヒット、コントロールヒットを無効にするのですが、
このままではサブフォームも無効化されますので、
コントロールヒットに条件を付けます。
条件はLastParkの関数を使います。
親のコントロール名に命名規則をつけ、判断させれば大丈夫です。

例として、
親のコントロール名を「a.〜」とつけ、
条件はLeft(LastPark(1),2)='a.'

これで無効化できるかと思います。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 17:12 | 最終変更
nkmt  長老   投稿数: 1668
fjksudou様

Left(LastPark(1),2)='a.' でいいんですかね?

Lastparkでいいんですかね?

サブフォーム側に
コントロールヒット 親のコントロール名
と地道に全項目定義する方法ではいけそうです。

CTRLNAMEみたいな関数って有りませんでしたかね?
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 17:17 | 最終変更
nkmt  長老   投稿数: 1668
HandledCtrl() で試してみます。
PS.駄目でした。
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2017-8-4 17:30
nkmt  長老   投稿数: 1668
今回は、fjksudou様のアドバイスの方法を取りました。

子タスク側で
ウィンドウヒット
コントロールヒットは、条件指定タスクの項目を一つずつ指定

省略出来る部分は、a.のみ指定して、やりたいことが出来そうです。

あとは、親タスクの X閉じるも無効化します。
投票数:0 平均点:0.00
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 17:35
fjksudou  長老   投稿数: 180
終了(X)も無効化した方がいいですよ。
投票数:0 平均点:0.00
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 17:35
Tanda  長老   投稿数: 2151
思った通りの動きが実現できてよかったですね。

おめでとうございま〜す!
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 16:40 | 最終変更
nkmt  長老   投稿数: 1668
fjksudou様、レスありがとうございます。

そうですね。
条件指定タスクと
エントリータスクの画面を分けて、
エントリー側をモーダルにする事が
遅延トランを有効活用しての ALL or Nothing の一つの方法
なのでしょうね。

それから ウィンドウヒット を教えてくださり
大変感謝申し上げます。
コントロールヒットも。

やりたい事が出来そうです。
いつも助けて頂き有難うございます、

Tandaさん>アドバイスありがとうございます。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 16:58
nkmt  長老   投稿数: 1668
Tandaさんが例を示した
条件指定タスクでのトランザクション開始。。。。

子は親と同一トランザクションにして
親側で入力時ロック等にして
トランザクション開始=レコード前の前
などにする方法も有りますね。

おっしゃる通り作法としては適切ではないのかもしれませんけど。
ありがとうございました。

でも今回の場合、それでやるとかなり複雑になりそうなので
止めます。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 17:05
Tanda  長老   投稿数: 2151
トランザクション開始の問題だけですから、この場合はロックは
関係ないですね。

あと、トランザクション開始はこの場合、「タスク前の前」に
なります。

> でも今回の場合、それでやるとかなり複雑になりそうなので
> 止めます。

逆だと思いますよ。それでやると面倒な設定がほとんどいらなく
なって安泰そのものになるはすです。(^^;
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 17:10
nkmt  長老   投稿数: 1668
条件指定 → 編集 → ALL or Nothing
→ また次の条件指定 → 編集作業 と何度も繰り返したいので

トランザクション開始を タスク前の前には出来ないのかなぁ
と思いました。

投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 17:12
Tanda  長老   投稿数: 2151
おっしゃる通りです。

プログラムの作法は別として、というのはその部分です。
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 17:15
Tanda  長老   投稿数: 2151
いずれにしても、「Magic eDeveloper V10 遅延トランザクション」
というドキュメントはほんとに良く書けていますよ。

私にとっては、バイブルです。
投票数:0 平均点:0.00
depth:
4
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2017-8-4 17:19
Tanda  長老   投稿数: 2151
ちなみに、その内容はMSJ主催のセミナーの「RIAトレーニング」
にも一部引用で網羅されています。

ご参考までに。
投票数:0 平均点:0.00
depth:
5
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 17:49
Tanda  長老   投稿数: 2151
「Magic eDeveloper V10 遅延トランザクション」のドキュメントですが、
インターネットで検索すれば、PDFファイルがすぐに見つかりますね。
まだの人はぜひご一読ください。きっとバイブルになりますよ。(^^)
投票数:1 平均点:10.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2017-8-4 17:39
nkmt  長老   投稿数: 1668
Tandaさん、fjksudouさん ありがとうございました。
X終了もですね。なるほどです。
投票数:0 平均点:0.00

  条件検索へ


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