PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
14977 | 01/04/07 12:55:49 | RE(5):PB5.0.02: データウィンドウのRetrieveを中断するには(自己レス) By Chicchi |
14936 | 01/04/03 22:11:30 | RE(4):PB5.0.02: データウィンドウのRetrieveを中断するには(自己レス) By Taka |
14893 | 01/03/29 16:41:31 | RE(3):PB5.0.02: データウィンドウのRetrieveを中断するには(自己レス) By Chicchi |
14889 | 01/03/29 13:59:19 | RE(2):PB5.0.02: データウィンドウのRetrieveを中断するには By Chicchi |
14859 | 01/03/28 00:36:08 | RE(1):PB5.0.02: データウィンドウのRetrieveを中断するには By M.M |
14857 | 01/03/27 18:23:15 | PB5.0.02: データウィンドウのRetrieveを中断するには By Chicchi |
カテゴリ:PowerBuilderの開発環境
日付:2001年04月03日 22:11 発信者:Taka
題名:RE(4):PB5.0.02: データウィンドウのRetrieveを中断するには(自己レス)
Chicchiさん、こんばんは。
何やら複雑な方法で解決されたようですが...
元発言のスクリプトにおいて、いくつかアドバイスします。
その1
RetrieveRowイベントにスクリプトを記述している場合、PowerBuilderは暗黙にYield()を
呼び出してくれます。(レスポンスが低下するのはその証拠)
ですので、明示的にYield()を書く必要はありません。
その2
厳密に言うと、検索をキャンセルする場合フラグをON/OFFするだけでは不十分です。
同時にdw.DBCancel()によって終わらせてください。
その3
RetrieveRowの最中にDoubleClickedが割り込まれて実行される点に注意してください。
その中でレスポンスウィンドウを開き、閉じた後にRetrieve関数を再発行していますね。
ここが最大のポイントだと思うのですが、大もとのRetrieve関数によるRetrieveRowの
タイミングで、更なるRetrieveを割り込み実行することは可能だと思いますか?
解決策としては、レスポンスを開く?閉じたら再Retrieve の部分をウィンドウ関数
などに移してください。そしてDoubleClickedには、
// 検索の中断
ib_cancel = TRUE
This.DBCancel()
// 開く(非同期呼出し)
Parent.POST wf_OpenChild(Row)
とすべきです。
こうしておけば、大もとのRetrieveが完全に終わってからウィンドウが開くように
なりますし、Start/Endのタイミングで複雑な処理をやらずに済みます。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 2.3
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.