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日 16:17 発信者:240SX
題名:RE(2):PB6.5: deleterow
Potatoさん、こんにちは。
>240SXさん、こんにちは。
>
>> 下記のロジックで・・・不正な処理と表示され強制終了されてしまうのは何故ですか?
>>
>>>>
>>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のほうが計算が速いのでは?
>
ご返答ありがとうございます。
dw_1.SetRow(li_loop_cou)
deleterow(0)
としたらうまくいきました。
Dec li_loop_cnt は Integer li_loop_cou の間違いでした。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.