PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
15991 | 01/08/07 13:57:25 | RE(2):ページ違反で落ちます。 By azarashi |
15958 | 01/08/02 15:38:42 | RE(1):ページ違反で落ちます。 By 川端 |
15956 | 01/08/02 13:43:50 | ページ違反で落ちます。 By Riori |
カテゴリ:PowerBuilderの不具合?
日付:2001年08月07日 13:57 発信者:azarashi
題名:RE(2):ページ違反で落ちます。
川端さん、Rioriさん、こんにちは。
PB7.0.2C3において開発中に、DeleteRow関数とRowFocusChangedイベントの兼ね合いで
アプリケーションエラーがおこったことがあります。
調べたところ、PB4.0.3の場合ではバグとして認知されているようです。
回避策として、私の場合はこれで回避できました。
1.ユーザイベントを作成し、RowFocusChangedイベントの内容を移しかえる。
2.RowFocusChangedイベントから、上記ユーザイベントをPOSTで呼び出す。
違っていたらごめんなさい、です。
>>InsertRowで複数行追加を行い、続けてDeleteRowで行削除を行ったときに
>>RowFocusChangedイベントが発生し、この段階でページ違反が起こってしまい
>>ます。RowFocusChangedに書かれている処理を削除すれば、回避できると思う
>>のですが、大事な処理が記述されていてこの方法は使えません。
>>ページ違反が起きてしまう原因も不明ですし、八方塞な状態です。
>>他に、RowFocusChangedを強引に回避する方法か、もしくは代替できるような
>>イベントがありますでしょうか?
>
>恐らくフォーカスの当たっている行に対して DeleteRow を行ってしまった為に
>RowFocusChanged イベントが発生してしまったと思われます。
>また、ページ違反が起こった原因として、上記の状態で RowFocusChanged イベントが
>発生した場合、引数の row の値が処理として正しくない値が入っている可能性が
>考えられます。
>
>回避方法は幾つか考えられますが…
>
>方法1.
>インスタンス変数を用意し、DeleteRow を行う直前に、その変数へ値を代入。
>RowFocusChanged イベントで、インスタンス変数を調べ、値が入っていたらイベント内の
>処理を行わないようにする。
>
>方法2.
>SetRow 関数などでフォーカスを対象の行からどかしてから DeleteRow を行う。
>
>方法3.
>RowFocusChanged イベントで、引数 row の値を調べ、値が異常だったら以後の処理を行わない
>ようにする。
>
>と言ったところでしょうか?
>取り敢えず、ご自分で色々と試して見て下さい。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.