PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
14574 01/02/13 13:28:51 RE(3):PB6: 二重ループのレスポンスについて By t.y
14560 01/02/11 01:15:09 RE(2):PB6: 二重ループのレスポンスについて By Taka
14554 01/02/09 20:30:21 RE(1):PB6: 二重ループのレスポンスについて By M.M
14552 01/02/09 19:29:41 PB6: 二重ループのレスポンスについて By t.y

カテゴリ:スクリプトの記述
日付:2001年02月09日 20:30 発信者:M.M
題名:RE(1):PB6: 二重ループのレスポンスについて

t.yさん、こんばんは。
プログラムが読みやすいように、半角スペースを全角スペースに置換しています。

>現在、下記のような二重ループのコーディングを行ってあります。
>ごく普通の二重ループなのですが、この中のループにDWの項目を見る
>IF文を追加すると、まったくレスポンスがなくなるぐらい遅くなるのです。
>...

>long lRowCount
>long i

>lRowCount = dw_1.RowCount()
>FOR i = 1 TO lRowCount
> IF dw_1.Object.t_lccd[i] = \"ABC\" THEN
>  CONTINUE
> END IF
> FOR j = i + 1 TO lRowCount
>  //例えばこんな感じでDWに関するIF文をいれると、もうダメ
>  IF dw_1.Object.t_entf[j] = \"1\" THEN
>   CONTINUE
>  END IF
>   :
>  他の処理
>   :
> NEXT
>NEXT

1個目のループでデータウィンドウの1行目から最終行までループし、
2個目のループで現在行から最終行までのループをしているわけです
よね。

具体的な処理の内容が今ひとつ不明ですが、ロジックを工夫すれば
ループは一つで済むのではないでしょうか。

それから、データウィンドウのカラムをアクセスする時に、dw_xx.Object.yyyy
と書くよりも、GetItemXXXX関数を使った方が速かったように思い
ます。


>二重ループなんて普通に組むと思うのですが・・・

変数だけをアクセスするようなループ処理では、ループを二重にしても
三重にしてもネィティブコードコンパイルで処理速度向上が期待できま
すが、データウィンドウをアクセスする時にはやらない方が賢明です。

特に、DeleteRow関数とかInsertRow関数なんかをループ内で使用する
時には要注意です。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS INFORMIX Net 7
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS INFORMIX-OnLine 7
WebServer (記載なし)

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