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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.