過去の桐井戸端BBS (桐ver.8)
11710 共有ファイルへの併合をしたい soon 2001/06/18-12:43
他のパソコンで共有ファイルを開いている場合、併合処理してもデータが更新できないのは、
このような仕様のためと以前お聞きしました。
これに変わる処理方法などあれば、どなたかおしえてください。

具体的には、共有ファイルの番号の項目を参照して、一致すればそのレコードを更新して、
なければ終端レコードにデータを追加する。

ということをしたいのです。


11714 Re:共有ファイルへの併合 佐田 守弘 2001/06/18-16:44
記事番号11710へのコメント
soonさん
一括処理を使って、
>具体的には、共有ファイルの番号の項目を参照して、一致すればそのレコードを
>更新して、なければ終端レコードにデータを追加する。
といった内容を記述すればできるはずです。
一括処理は具体的な表がなければ作れませんが、大ざっぱにその構造を書けば
=============================================
表 <併合元表>
繰り返し (.NOT #終端行)
 代入 &照合値=[<照合項目>],&併合値1=[<併合項目1>],・・・
 表 <併合先表>
 検索 [<照合先項目>]{&照合値}
 ケース開始
  ケース (#終端行)
   行追加 [照合先項目]=&照合値,[<併合項目1>]=&併合値1,・・・
  ケースその他
   行訂正 [<併合項目1>]=&併合値1,・・・
 ケース終了
 表 <併合元表>
繰り返し終了
============================================
の様になります。
ただし、上記は併合先に該当するレコードが1件だけあるケースを想定しています。
複数の該当するレコードがある時には、
それらを繰り返して検索しなければならないのでかなり複雑になりますね。

佐田守弘(KS-00119)
11718 Re:共有ファイルへの併合 soon 2001/06/18-17:52
記事番号11714へのコメント
>の様になります。ただし、上記は併合先に該当するレコードが1件だけある
>ケースを想定しています。複数の該当するレコードがある時には、それらを
>繰り返して検索しなければならないのでかなり複雑になりますね。
>
>佐田守弘(KS-00119)

だいたいわかりました。
併合先に2万件、併合元に5件程度のレコードがあるのですが、処理の時間的に実用的でしょうか。
わかりましたら、よろしくお願いします。

11721 処理速度は予測不能です 佐田 守弘 2001/06/18-18:22
記事番号11718へのコメント
soonさん
>処理の時間的に実用的でしょうか。
>わかりましたら、よろしくお願いします。

はっきり言って、予測不能です。

桐の処理速度は、
・桐の条件:レコードのサイズやデータの内容、検索するデータの形
・PCの条件:マシンのスペック
の他に、ネットワーク上での処理速度は、ネットワークのトラフィックも大きく影響します。
従いまして、どの程度の時間がかかるかは部外者には推定できません。
しかも、共有の場合には、索引機能が使えませんから、専有モードでの処理と比べて、
格段に時間がかかる事は予測されます。

他の方々の参考になりますので、試した結果をぜひ御報告下さい。

佐田守弘(KS-00119)
11722 Re:共有ファイルへの併合 尾形 2001/06/18-18:22
記事番号11718へのコメント
別の方法も。

表 <併合元表>
繰り返し (.NOT #終端行)
 代入 &照合値=[<照合項目>]
 表 <併合先表>
 検索 [<照合先項目>]{&照合値}
 条件 (#終端行<>1) 行削除
 表 <併合元表>
繰り返し終了
表 <併合先表>
ジャンプ 行=終端
読み込み 表,併合元表

併合元と先が同じ定義ならこんな方法もありかも。
行削除して読みこむ形ですね。
記述が楽になりますし、後で項目を追加した場合も楽

11730 ご指導ありがとうございました。 son 2001/06/18-19:12
記事番号11710へのコメント
みなさんいろいろご指導ありがとうございました。

教えていただいた内容で確認できればしたいと思います。
なお、共有ファイルの索引機能が使用できないとということですので、
やはり時間的な面で実用的ではないかなという気がします。
約2万件の共有データに5件のデータを併合もどきの処理をするのに約1秒ぐらいを目標にしていましたので。

大変ありがとうございました。

戻る