ビュー再表示後にROLLBACK()できない
RIA環境(DB:sqlserver)で開発を行っております。
ビュー再表示後にROLLBACK()ができずに困っています。
子タスクで入力した内容を親タスクにも表示させるために、
子タスクでビュー再表示を実施し親タスクに戻っています。
その後、親タスクで破棄ボタンを押下した場合、
ROLLBACK()して子タスクの入力を取り消したいのですが
ROLLBACK()が効かずに入力前に戻せません。
ビュー再表示を行った後は、ROLLBACK()はできないのでしょうか?
トランザクションモードは
親が「新規の遅延トランザクション」で
子が「有効な遅延トランザクション内」で
トランザクション開始は親子共に「レコード前の前」です。
-
umiさん、
親タスクの「トランザクション開始」を「タスク前の前」に変更してみてください。
ビュー再表示を行うと、データの再読込みでレコードポインタが移動するので、レコードレベルの修正がコミットされてしまい、ロールバックができなくなります。
したがって、これを「タスク前の前」にすれば、レコードポインタが移動しても、タスク全体がトランザクションの対象となるので、ロールバックが可能となります。
-
Tandaさん、コメントありがとうございます。
親タスクの「トランザクション開始」を「タスク前の前」に変更したところ
ロールバックができました。
ありがとうございました。
-
umiさん、
トランザクションはたいへん便利な機能ですので、ぜひその奥義を極めてください。すばらしいアプリができあがりますよ。テンポラリファイルやワークファイルは一切、不要になります。
サインインしてコメントを残してください。
コメント
3件のコメント