PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
8880 | 99/10/22 12:25:13 | RE(3):PB6.5: deleterow>こんなやり方もありますよ By リエッチ |
8856 | 99/10/21 16:17:07 | RE(2):PB6.5: deleterow By 240SX |
8855 | 99/10/21 15:54:12 | RE(1):PB6.5: deleterow By Potato |
8854 | 99/10/21 14:50:03 | PB6.5: deleterow By 240SX |
カテゴリ:スクリプトの記述
日付:1999年10月21日 15:54 発信者:Potato
題名:RE(1):PB6.5: deleterow
240SXさん、こんにちは。
> 下記のロジックで・・・不正な処理と表示され強制終了されてしまうのは何故ですか?
>
>Dec li_loop_cnt
>
>For li_loop_cnt = 1 To dw_1.RowCount()
>
> If 条件?
>
> dw_1.DeleteRow(li_loop_cnt)
> li_loop_cnt = li_loop_cnt - 1
>
> End If
>
>Next
>
> ※条件式に間違いはないです。
>
直接の原因ではないかもしれませんが、
まず、dw_1.RowCount()はループ処理の前でLongの変数に入れてから
その変数をFor loopに使ったほうがよいです。
そうでないと、For loopで毎回行のカウントを行なうことになりま
すから。
それから、DeleteRowでループで削除するときは、
後ろの行からstep -1で削除したほうがよいです。
なぜなら、1行削除されると、削除された次の行が削除された
行番号となりますから。
それから、For loopで使っている制御カウンタli_loop_cntを
ループ内でいじらないほうがよいのでは?
ここではたいした差がないかもしれませんが、Dec li_loop_cnt
よりLongやIntegerのほうが計算が速いのでは?
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.