PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
7943 | 99/09/02 12:35:38 | RE(8):PB6.5: 単項目アクセス時の関数、ドット表記のスピード By peanuts |
7936 | 99/09/02 10:31:19 | RE(7):PB6.5: 単項目アクセス時の関数、ドット表記のスピード By てとらぽっと |
7935 | 99/09/02 09:54:48 | RE(6):PB6.5: 単項目アクセス時の関数、ドット表記のスピード By STRATOVARIUS |
7932 | 99/09/01 23:45:51 | RE(5):PB6.5: DW更新処理後、更新したデータだけをDWに残す方法 By peanuts |
7931 | 99/09/01 22:16:40 | RE(4):PB6.5: DW更新処理後、更新したデータだけをDWに残す方法 By STRATOVARIUS |
7930 | 99/09/01 21:18:48 | RE(3):PB6.5: DW更新処理後、更新したデータだけをDWに残す方法 By peanuts |
7929 | 99/09/01 20:40:25 | RE(2):PB6.5: DW更新処理後、更新したデータだけをDWに残す方法 By STRATOVARIUS |
7928 | 99/09/01 20:01:31 | RE(1):PB6.5: DW更新処理後、更新したデータだけをDWに残す方法 By M.M |
7927 | 99/09/01 19:54:37 | PB6.5: DW更新処理後、更新したデータだけをDWに残す方法 By STRATOVARIUS |
カテゴリ:スクリプトの記述
日付:1999年09月01日 21:18 発信者:peanuts
題名:RE(3):PB6.5: DW更新処理後、更新したデータだけをDWに残す方法
STRATOVARIUSさん、こんばんは。
>いつもお世話になっております。
>例えば200件表示されたDWの中から、チェックボックス等で選択されたデータのみを更新し、
>最終的には更新したデータのみを表示させる(残す)といった場合、以下のように処理しています。
・・・ 中略 ・・・
>このような流れだと、1件の更新でも非常に時間がかかってしまいます。また他のDBを更新する際は
>DSを使って、処理2の時にds.setitem(ii_row,\'Colum\',dw.getitemstring(ii_row,\'Colum\'))
>を必要項目分やっているため、更に時間がかかってしまいます。
>どうにかしてスピードをあげられませんでしょうか。
>(現状は処理2の時画面から行が消えていくのが見えるほど遅いです。)
まずはループの中で戻り値が一定の関数はループの外に出すことで多少パフォーマンスは上がります。
上記の場合はdw.rowcount()を変数にしたほうが良いと思います。
チェックされている行(またはその逆)を表示の対象外にするには1行づつ行を削除していくよりは、
フィルタを掛けるほうが断然速いです。
行数の多いデータのvalidationチェックは可能であればFind関数を使うと良いかも知れません。
また、「処理2の時画面から行が消えていくのが見える」とありますが、これは行が1行削除されるたび、
画面が無駄に再描画されているということです。
SetRedraw関数で自動再描画を止めて処理終了後に自動再描画を開始させるようにすると処理は速くなり、
見た目も、ちらつきが無くスッキリします。
項目の数とデータ型の同じDWやDS間でのコピーはSetItemで1行ずつまたは1項目ずつやるよりはRowsCopyや
ドット参照等で一気にデータを移すほうが速いですよ。
行単位での更新を制御する方法として、SetItemStatusで行のステータスを変更する方法があります。
チェックボックスをチェックしたタイミングで行のステータスをNewModifiedやModifiedニすると良いかも
しれません。(もちろんチェックをはずしたときは元のステータスNew等に戻すのを忘れずに。。)
他にもチューニングの余地はあるかもしれませんが、とりあえず思い付いた分だけ挙げてみました。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Oracle SQL*Net 2.3
Browser InternetExplorer5.X
Server SoftWare
OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.