重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。
Access2000のVBAで、テーブルの取り込み処理に
ついて教えて下さい。

下記のようなソースで、ACCESSのテーブルを取り込み
→エクセルに書き出しをしているのですが、
(1)の箇所で取り込み処理の時間が大量にかかっていることが
わかりました。

処理速度が速くなるような、別のコーディングがあるのでしたら
教えて頂きたいので宜しくお願いします。




----------ソース--------------------------
--------(1)---------------
With CurrentDb.QueryDefs(テーブル)
.Parameters("[ID]") = "1111"
Set rs = .OpenRecordset
End With
--------(1)---------------
If (Not rs.EOF) Then

oApp.Sheets(1).cells(count, i + 1) = rs(i).Name

oApp.Sheets(1).cells(count + 1, 1).CopyFromRecordset rs


End If

rs.Close
Set rs = Nothing
db.Close
-----------------------------------------

A 回答 (3件)

データの件数やテーブルのカラム定義等の条件により、


処理速度が変わる場合があります。

この質問には、上記のような詳細情報が欠如しているため、
「処理速度が速くなるような、別のコーディング」があるか
どうかは不明です。

この回答への補足

補足日時:2013/07/22 17:07
    • good
    • 0

全部の処理をするのに、5秒かかっているのを長すぎると感じておられるのか、


30秒なのか、3分以上かかるから長すぎると考えているのか、、、
そのあたりをお聞きしたかったわけです。
質問の回答者は、あなたが何をやっているかを想像してどこに問題があるかを推測するわけですが、どうしても想像できないところもあるわけです。 

それはさておき、データベースがらみの問題は、
・コーディングの問題
・SQLの組み方の問題
・データベースのテーブルなどの構造の問題
・データベースの性能の問題
・コンピューターのスペックの問題
などが原因となり得ますので、コーディング方法だけで解決できないこともありえます。
今回の、インデックスと最適化は、まずテーブルの状況を適正にして見ましょうという話でした。

また、データの件数によってはアクセスで処理していること事態に無理があるのかもしれませんし、
すぐにDBの乗り換えなどを余儀なくされるかもしれませんし、その時点でゼロから作り直すなら、
後でもつかえる標準的な方法で組んだら良いのかなって話にもなるわけです。

 

この回答への補足

私の質問はこれです。

>処理速度が速くなるような、別のコーディングがあるのでしたら
>教えて頂きたいので宜しくお願いします。

補足日時:2013/07/22 14:09
    • good
    • 0

コーディングの問題については良くわかりませんが、まず以下の2項目をご確認ください。



1. [ID]が主キーもしくはインデックスとして登録されていることを確認してください。
2. データが削除されることがあるなら、データベースの最適化を行なってください。


あと、こういう質問をするときは、
・どのようなスペックのパソコンで、
・何件程度テーブルから
・何件程度のデータをコピーしようとして、
・どのくらい時間がかかっているのか
を大体でよいので付加えていただけると、
問題がどこにあるのか想像しやすいかもしれません。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

>1. [ID]が主キーもしくはインデックスとして登録されていることを確認してください。
インデックス登録していないので、試してみたいと思います。

>2. データが削除されることがあるなら、データベースの最適化を行なってください。
データの削除は、発生しないのですが、試してみたいと思います。

>あと、こういう質問をするときは、
>・どのようなスペックのパソコンで、
>・何件程度テーブルから
>・何件程度のデータをコピーしようとして、
>・どのくらい時間がかかっているのか
>を大体でよいので付加えていただけると、
>問題がどこにあるのか想像しやすいかもしれません。
私としては、上記の記載は無意味だと思います。
処理速度:50秒が2件=100秒
ならOKで
処理速度:50秒が100件=5000秒
だとNGという考え方でしょうか?

私は、件数・パソコンのスペックにかかわらず、
処理速度:50秒の時点でNGだと思います。

処理速度:50秒が2件=100秒、処理速度:50秒が100件=5000秒

処理速度:5秒が2件=10秒、処理速度:5秒が100件=500秒
件数・パソコンのスペックにかかわらず、必要だと思います。

お礼日時:2013/07/22 11:01

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