容量不足で作成できなかったファイルを閉じるには?

解決


yuta  2005-04-13 23:20:10  No: 120903

はじめまして、早速ですが質問です。

今、DB(Access)に保存してあるデータをCSVファイルでエクスポートする処理を作っているのですが、
フロッピーなどのメディアに保存するときに、容量不足で書き込めないときの処理で苦戦しています。

現在のところ、Errオブジェクトで取得した数値でエラーイベントを起こして、保存先を変更した後にアプリケーションを閉じようとすると、Aドライブに処理が走ってしまいます。

原因は、最初に開いたファイルを閉じていないことだとわかっているのですが、よい対処方法がわかりません。どなたかご存知の方、ご教授願います。

VBのVerは6.0(SP5)
OSはXP-proです。


むっきー  2005-04-14 01:09:01  No: 120904

>フロッピーなどのメディアに保存するときに、容量不足で書き込めないときの処理で苦戦しています。

直接フロッピーに保存するのではなく
一旦、ローカル(ハードディスク)に保存した後 そのファイルをフロッピーにコピーしてみては?

またはAPIを使用して空き容量を調べるなど...


yuta  2005-04-14 01:21:21  No: 120905

むっきーさん、早速の返信ありがとうございます。

>直接フロッピーに保存するのではなく
>一旦、ローカル(ハードディスク)に保存した後 そのファイルをフロッピーにコピーしてみては?

すいません、説明が足りませんでした。
エクスポートするときに、CommonDialogを表示して保存先を指定しているので、この方法ですと、難しいと思います。

>またはAPIを使用して空き容量を調べるなど...

このことも対策として考えていたのですが、エクスポートするファイルの容量がCloseするまでわからないので、使うかどうか迷っているところです。
(テーブルのバイト数を取得して比較することも考えましたが、現在のところ保留中です。)

せっかくレスをいただいたのにはっきりとした返事ができなくて申し訳ないです。 m(_ _)m


ガッ  2005-04-14 01:31:44  No: 120906

ノ<横失礼
> >直接フロッピーに保存するのではなく
> >一旦、ローカル(ハードディスク)に保存した後 そのファイルをフロッピーにコピーしてみては?

> すいません、説明が足りませんでした。
> エクスポートするときに、CommonDialogを表示して保存先を指定しているので、この方法ですと、難しいと思います。
むっきーさんは、
「CommonDialogで選択し、その名前で書き始める」という挙動ではなく
「テンポラリファイルに書き出して、CommonDialogで選択し、その名前でコピーする」という挙動にしたらどうですか?
と言いたかったのではないでしょうか?

> >またはAPIを使用して空き容量を調べるなど...

> このことも対策として考えていたのですが、エクスポートするファイルの容量がCloseするまでわからないので、使うかどうか迷っているところです。
> (テーブルのバイト数を取得して比較することも考えましたが、現在のところ保留中です。)
これなら、なおさら一時ファイルにバッファする必要があると思います…
書いている途中に例外がおきるよりも、書き始める前に例外が起きた方が状態を戻し易いですし。


yuta  2005-04-14 02:05:41  No: 120907

なるほど…。そのような方法なら実現できる可能性がありますね。

もしそのような方法を提案してくださっていたならば、むっきーさんに本当に申し訳ないことをしてしまいました。すいません。

早速提案していただいた方法を参考にしたいと思います。 m(_ _)m


yuta  2005-04-14 18:25:13  No: 120908

あれから検討を重ねた結果、FileSystemObjectを使って、ディスクの空き容量からエクスポートするデータのバイト数の近似値の差が0バイト未満のときにはエラーメッセージを表示してファイルの書き込みを行なわないようにしました。

しかしながら、今回の件でまだまだVBについてもっと勉強が必要だと思いました。

アドバイスをいただいたむっきーさんと、ガッさん本当にありがとうございました。 m(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加