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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.