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

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