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

パスワード:


パスワード紛失

Re: Rollback について

このトピックの投稿一覧へ

なし Re: Rollback について

msg# 1.2
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2011-11-10 23:34
null  長老   投稿数: 191
ようやく、希望する動作が実現出来ましたので自己レスです。
覚書き兼、同じことをやりたい人向けのメモとして書いておきます。

まずは回答ありがとうございました。
ワークテーブルを使用しているのは直接テーブルを更新出来ない
仕様なのでそうなっています。無駄と言う訳ではありません。
後は遅延トランザクションをフル活用すればシンプルになる部分も
あるだろうと思いつつ、すでにある雛形を流用しての開発なので
こうせざるおえないというのもあります。


「たまに上手く戻らないことがある」件については
テーブルコントロール上で Rollback() を発行すると
元に戻った後、フォーカスがある項目だけクリアされる現象があります。
1.9g の RIA で確認しています。これは恐らく不具合でしょうが、
報告しても中々修正されないし、回避策があるので放置することにします。
不味いと思う人は MSJ 辺りに投げてください。

回避策としてはテーブルコントロールから CtrlGoto() で親タスクの
ダミー項目へ移動させた後、Rollback() を発行しています。


前回、エラー発生時は A=アボートとしていましたが、R=復帰に変更しました。
これで、クリアボタン押下時の動作は希望する動作になりました。
ただ前回も書いた通り、終了ボタンを押下時の動作が希望した動作にならないので、
終了ボタン押下時は Rollback() は使用せず、一つタスクを作成して、
それを CALL しています。

そのタスクで何をやっているかと言うと、読取専用テーブルに無理やり更新させ
(ようは何でも良いので例外を発生させる) エラーのイベントハンドラで
発生したイベントを破棄した後、そこで、A=アボートさせることで、
親タスクまるごとアボートするので、Rollback() に近い状態にすることが出来ました。
(このタスクが一つあれば Rollback() は要らない子になりそうな気が…)


Rollback 一発で OK な上、セーブポイントも利用できる他言語に
慣れた人間に話したところ、メンドクサイと苦笑されましたけど、
uniPaaS だから仕方ないよねということにしています。
投票数:0 平均点:0.00

投稿ツリー

  条件検索へ


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