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

パスワード:


パスワード紛失

テーブルコントロールの再計算について

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2009-7-15 15:46
NKJ006  新米   投稿数: 11
皆様のお力をお借りしたくて質問させて頂きます。

テーブルコントロールに2つの列を設定しています。
列A・列Bとします。

列Aには数値を入力します。
列Bには、列Aの合計値に対する各行の列Aの値の比率を自動計算させた値を表示させます。
こんな感じです。

合計 60
      列A  列B
1行目  10  0.16
2行目  20  0.33
3行目  30  0.5
 ・   ・  ・
 ・   ・  ・

これを各行の列Aに数値を入力して列Bに移動する間で、全行の列Bの値を再計算させて
結果を再表示させたいのです。

合計 60
      列A 列B
1行目  10  0.16
2行目  20  0.33
3行目  30  0.5
4行目  40 ← 4行目の列Aに40を入力してから列Bに移動させると

合計 100
      列A 列B
1行目  10  0.1
2行目  20  0.2
3行目  30  0.3
4行目  40  0.4 → このような表示をさせたいのです。

今までに試みた方法としては、
 列Aに変更イベントを設定して、その中で作成したユーザイベントを実施させます。
 ユーザイベントの設定は、強制終了をR=レコードに設定しました。
 (ヘルプでレコード後処理を実施してからイベント実施するとの記述があったので使用しました)
 ユーザイベントでは別PGをコールして、上記テーブルコントロールで使用しているファイルを使用して
 各行の比率を再計算させています。
 (合計値は画面上で別変数を使用して計算させていて、パラメータとして渡しています)
 その後、画面再表示のイベントを実施させています。

この設定で実行すると
合計 100
      列A 列B
1行目  10 0.1
2行目  20 0.2
3行目  30 0.3
4行目  40 0.0 → このような表示になってしまします。

再計算実施時に、4行目の列Aの値が確定されていないためだと思うのですが、
何か良い方法があればと思っています。

宜しくお願い致します。

使用環境
OS Windows XP
Magic V9 PLUS SP3C
DB Pervasive V8
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-7-15 17:31
sigeno56  長老   投稿数: 336
熟読していませんが、この計算に影響するデータを1台でしか
入力していないのであれば、別PGで全データを読む必要も
ないのでしょうね。

入力中の値÷(合計変数−VarPrev('A'VAR等)+入力中の値)

的外れだったらごめんなさい。
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-7-16 9:28
NKJ006  新米   投稿数: 11
sigeno56様 ご返答ありがとうございました。

ご教授頂いた方法だと、計算されない最後の項目を計算式で別途計算するという
方法だと思うのですが、それも有りですね。

イベント発生時に強制でレコード後処理を実施させる方法があれば、いまのロジックを
そのまま活かせると思いますので、もし方法をご存知でさればお教え願いたいと思います。

ユーザイベント設定画面の強制終了の項目はどのように使用すれば有効になるのでしょうかね。
不勉強でなかなかうまく利用出来ないでいます。

よろしくお願い致します。
投票数:0 平均点:0.00
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-7-16 17:55
COOLOH  新米   投稿数: 2
レコードのリアル更新ですが結構ハマります
・イベント実行 前行&次行
・子タスクでの親タスクの変数の更新
・イベント実行 レコード書込
一度試してみて下さい
投票数:0 平均点:0.00
depth:
2
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2009-7-17 9:42
kyoike  一人前 居住地: M2C  投稿数: 80
変更イベントのロジックユニットで記述している、
イベント実行(ユーザイベントの呼び出し)の設定でどうにかならないでしょうか?

該当行のウェイトが「Yes」になってはいませんか?
ここを「No」にすると、レコード後を通るようになります。
投票数:0 平均点:0.00
depth:
3
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2009-7-22 14:38
NKJ006  新米   投稿数: 11
COOLOH様 kyoike様 ご返信ありがとうございます。

本日まで色々試行錯誤しまして、結論として変更行以外を別PGにて計算して変更値を
別途計算させるという方法になりました。

イベントのレコード書込やイベント実行のウエイトをNOにする方法は、どちらもレコード書込は
実施されるのですがタイミングが今回作成するPGでは使用出来ないタイミングで
実施されてしまうためです。

私の検証では、どちらの書込みも、変更イベントを設定した項目から次のパーク出来る項目または、
パーク出来る項目の最後まで移動しないと実施されないようなのです。

なので変更イベント中に他の処理を実施させたり、変更項目から次の項目に移動する間に、レコード
書込以外のイベント実施をさせたりすると書込みが実施されませんでした。

うまく利用できればと思っていましたが、これ以上は無理そうです。
まだまだ修行が足りないようです。

ありがとうございました。
投票数:0 平均点:0.00

  条件検索へ


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