過去の桐井戸端BBS (桐ver.9)
29000 表の多重化はどういう場合に使えば有効なのでしょうか 海猿 2005/02/11-11:11
 表の多重化についてお願いします。
以前から疑問に思っていたのですが、多重化はどういう場合に使えば有効なのでしょうか?
例えば
 グループ化した一覧形式のフォームで、データを入力してコマンドボタンの左クリックイベントで、
 編集表のグループ解除
 条件Aの絞り込み
 繰り返し処理の行訂正
 絞り込み解除
 編集表のグループ化
というような記述をしています。
こういう場合、表を多重化して処理させた方が処理速度が上がるのでしょうか。
もしそうならば、どの時点で多重化すれば良いのでしょう。
そして、その記述の仕方もあわせてお願いします。

29001 ケースバイケース ONnoji 2005/02/11-11:44
記事番号29000へのコメント
海猿さん、こんにちは。

必要があれば、多重化することによって処理のパフォーマンスが良くなることがあります。
これは一般論です。

しかし、多重化は常に万能薬でも特効薬でもありません。
従って、実際にケースバイケースで試してみる必要がありますよ。
場合によっては多重化できないケースもあります。

以下は拙作HPからの引用です。よろしければご参考にしてください。

【引用】http://www.geocities.jp/siliconvalley_bay_7565/@geoboard/1198.html
>多重化した表を対象に処理すると、
>レコードスクロールバーとレコードカウンターがリドロウ(再描画)されなくなるので、
>速くなります。
>通常、遅い遅いと思っていることの大部分はリドロウが原因です。
>しかし、[描画禁止]メソッドを使用してもレコードカウンターはリドロウされますの
で、
>[描画禁止]メソッドを使用するのは意味がありません。

http://www.geocities.jp/siliconvalley_bay_7565/procedure02.htm#no07

【引用】http://www.geocities.jp/siliconvalley_bay_7565/procedure02.htm#no07
>.編集対象表の多重化
> 編集対象表を多重化するのは次の理由によります。
>・フォームの再描画が余計に発生しないため、処理時間が短くなります。
>・レコードスクロールバーが上下しないので見苦しくなくなります。

それでは失礼いたします。(@^^)/~~~

29002 Re:表の多重化(記載例) 悲しげ 2005/02/11-11:45
記事番号29000へのコメント
>多重化はどういう場合に使えば有効なのでしょうか?

私の乏しい経験を語れば、一般的にWin桐の場合、一括処理(kev)による
各処理の過程が逐一画面に表示されてしまうので、それが時に麗しくなく且つそのために処理速度が
激しく低下してしまうことがあります。
その現象を避けるためにv.8の途中から登場した「描画禁止」メソッドがありまして、
これはこれでナカナカ使えるメソッドなのではありますが、
実はこれでもまだ速度低下を避けられない場合があります。
それは画面右端等に表示されているスクロールバーの存在です。
これだけは「描画禁止」メソッドでも制御できないので、このような場合にお尋ねの「多重化」を利用することとなります。
なお、この件は、私はONnojiさんから教わりまして、ご本人から後ほど
補足または解説のリンクが提示されそうな気も………。(^^;)

>どの時点で多重化すれば良いのでしょう。
>そして、その記述の仕方もあわせてお願いします。

では一例
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
メソッド呼び出し @フォーム.描画禁止(1)
var 自動,長整数{&元表No},自動,文字列{&グソ}
*グソとは糞の濁音ではなくてグループソースの意味(数値かも?)
メソッド呼び出し [某グループ項目].グループソース値取得(&グソ,0)
*当該表が現在の編集対象表だとして
&元表No=#is表
多重化 /*この時点で元表が別表として多重化オープンされる、基本状態で!*/
*必要ならここで任意の(索引等で)並べ替えて
絞り込み [某グループ項目]{&グソ} /*または「条件Aの絞り込み」かな?*/
*この後が、恐らく処理速度が気になるところのメインディッシュたる
「繰り返し処理の行訂正」なる処理が入って
終了 表 編集対象表 /*多重化表を閉じる*/
*そのまんまでも直前の編集表に戻るような気がしないでもないが、念のため
編集表 &元表No
メソッド呼び出し @フォーム.描画禁止(0)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
こんな感じではいかがでしょう?
(但し挙動は全く未確認)(^^;)


29003 Re:ケースバイケース 悲しげ 2005/02/11-11:47
記事番号29001へのコメント
あ、ONnojiさんに数秒〜数十秒差で負けた(^^;)

29004 Re:表の多重化(記載例) ONnoji 2005/02/11-11:51
記事番号29002へのコメント
>ご本人から後ほど補足または解説のリンクが提示されそうな

悲しげさん、こんにちは。

先ほど拙作リンクを提示させていただきました。(^^ゞ

29005 補足 悲しげ 2005/02/11-11:53
記事番号29002へのコメント
もしかすると前稿記述の前後に下記の★印部を挿入する必要あったかも?
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
メソッド呼び出し @フォーム.再描画(1) /*★*/
メソッド呼び出し @フォーム.描画禁止(1)
var 自動,長整数{&元表No},自動,文字列{&グソ}
・・・(中略)
メソッド呼び出し @フォーム.描画禁止(0)
メソッド呼び出し @フォーム.描画更新() /*★*/
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

29006 Re:補足 ONnoji 2005/02/11-11:57
記事番号29005へのコメント
海猿さん、こんにちは。

以下のページで、

http://www.fuku3.com/~habata/bbshead.htm

以下のいずれかのキーワードをに入力して、

多重化

[Google で桐井戸端BBS過去ログ検索]ボタンを実行すると、
いろいろと情報が見つかりますよ。

29009 Re:表の多重化 海猿 2005/02/11-12:31
記事番号29000へのコメント
 ONnojiさん、悲しげさん さっそくのご返答有り難うございます。
記載されたのを参考に多重化させた所、処理速度はかなり上がりました。

たいへん参考になりました。有り難うございました。

戻る