アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB5でORACLE8のデータを読みMS-ACCESSに出力するプログラムを使用
しています。何十万件ものデータを扱う為に処理時間に30分~1時
間程掛かるのですが、その処理中にMS-WORD,EXCELを使用したくて、
エクスプローラからファイルをダブルクリックしても、砂時計のまま
MS-WORD,EXCELが反応せず、VBの抽出処理が終ると同時にMS-WORD,EXC
ELも起動します。この現象はWINDOWS95で発生しWINDOWS98ではこの現
象が出ません。
毎日数回行う処理なので待ち時間が馬鹿にならず困っております。
どなたかこういった経験をお持ちで無いでしょうか?

ちなみに待っている間はスクリーンセーバも動かずこちらも抽出終了
と同時に起動します。

以上、宜しくお願い致します。

A 回答 (4件)

おそらく件数分まわるループなどがあるのでは?


VB製のEXEが処理を独占していると思うので
DoEvents
をループ内に入れて、制御をOSに渡してみてはどうでしょう。
>30分~1時間
これよりも処理がかかるようになりますが、プログラムとOSの処理を並走させるのであれば、しかたのないこと・・・

はずしていたら、すいません。
    • good
    • 0
この回答へのお礼

有り難うございます。
そうですね、多少時間が掛かっても処理を並送させる事を
優先したいので試してみます。
現在 “制御をOSに渡した後”の状態について調査している最中です。

お礼日時:2002/02/28 10:58

大変ですね。

。。ちなみに私はORACLE8のデータを読みMS-Excel2000に出力するプログラムを作りました。
処理件数は確か万単位だったかな。

ORACLE8を使用されているということですが、PL/SQLは使えますか?もし使えるのであれば、PL/SQLでいったんCSVテキストに出力して、MSACCESSにインポートする処理ができると思います。(やったことはないですが)

あとは、参考までに私が作ったときはCSVにいったん出力後、CSVからEXCELに表示させました。VB6で開発したので配列間の代入を1行でできましたが、VB5でもできるのかどうかはわかりません。

もし、できたら教えてくださいね!!
    • good
    • 0
この回答へのお礼

代入はVB5でも1行で出来かもしれませんね。
引数の数が多いのでPLで使えるかどうか分かりませんが、今度チャレンジしたいと思います
御丁寧にありがとうございました。

お礼日時:2002/02/28 15:41

VB6でWindowsNTWorkstation4.0で同じような処理を


作ったことがあります。
そのときは、5分から10分くらいその状態でした。
DoEventsを使っても回避し切れなくてとても困った
記憶があります。

そのときは結局「処理実行中はMSのソフトを起動しない」
という運用ルールで回避しました。

ちなみに、処理件数はどのくらいですか?
待ち時間から推測して相当ありそうな感じがしましたが。。。あとは、配列を使っているのであれば配列データの処理の仕方や、オブジェクトの参照方法で処理時間が
短縮できる場合があります。

今の時点ではこれくらいしか言えないですね。。。
お役に立てなかったらごめんなさいね。

この回答への補足

すみませんお礼の内容を間違えてしまいました。
事例があった事を知れただけでも大きな収穫です。
DoEventsでもダメな場合もあるのですか(>_<)
自分は現在試している最中なのですが、
それだとやはり困りますね…
件数は5~7万件、多いときは10万件位処理します。
オブジェクトの参照方法で処理時間を短縮する事
も試してみたいと思います。

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

補足日時:2002/02/28 10:56
    • good
    • 0
この回答へのお礼

有り難うございます。
そうですね、多少時間が掛かっても処理を並送させる事を
優先したいので試してみます。
現在 “制御をOSに渡した後”の状態について調査している最中です。

お礼日時:2002/02/28 10:52

 単純に、コンピュータに多大な負担がかかっていて起動が先送りされているのではないのでしょうか?


 
 処理時間が30分~1時間もかかるほどの膨大な負担がかかっているのですから仕方がないのでは…?
    • good
    • 0
この回答へのお礼

御回答有り難うございます。

マシンのスペックですかね...
遅くても良いので何とか
起動だけでもしてくれると
助かるのですが・・・

お礼日時:2002/02/27 18:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!