
お世話になります。
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件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
全部の処理をするのに、5秒かかっているのを長すぎると感じておられるのか、
30秒なのか、3分以上かかるから長すぎると考えているのか、、、
そのあたりをお聞きしたかったわけです。
質問の回答者は、あなたが何をやっているかを想像してどこに問題があるかを推測するわけですが、どうしても想像できないところもあるわけです。
それはさておき、データベースがらみの問題は、
・コーディングの問題
・SQLの組み方の問題
・データベースのテーブルなどの構造の問題
・データベースの性能の問題
・コンピューターのスペックの問題
などが原因となり得ますので、コーディング方法だけで解決できないこともありえます。
今回の、インデックスと最適化は、まずテーブルの状況を適正にして見ましょうという話でした。
また、データの件数によってはアクセスで処理していること事態に無理があるのかもしれませんし、
すぐにDBの乗り換えなどを余儀なくされるかもしれませんし、その時点でゼロから作り直すなら、
後でもつかえる標準的な方法で組んだら良いのかなって話にもなるわけです。
No.1
- 回答日時:
コーディングの問題については良くわかりませんが、まず以下の2項目をご確認ください。
1. [ID]が主キーもしくはインデックスとして登録されていることを確認してください。
2. データが削除されることがあるなら、データベースの最適化を行なってください。
あと、こういう質問をするときは、
・どのようなスペックのパソコンで、
・何件程度テーブルから
・何件程度のデータをコピーしようとして、
・どのくらい時間がかかっているのか
を大体でよいので付加えていただけると、
問題がどこにあるのか想像しやすいかもしれません。
お返事ありがとうございます。
>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秒
件数・パソコンのスペックにかかわらず、必要だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessへ日付をINSERT
-
PHPでPostgreSQLのテーブルを表...
-
PHPでいいね機能を作りたいので...
-
access → Oracleへのデータ移...
-
SQLiteでDBに書き込みできません
-
csvをDBへ読み込んだら、NULLが...
-
OracleからAccessへのインポート
-
<VB.NET>INSERT文でDBにデータ...
-
PHPで[]の使い方について
-
MySQL 複数の同じような命令が...
-
checkboxで複数選択して,OR...
-
ASPでSQL文を使う場合に。
-
エラー3011
-
phpでデータリスト作成
-
Accessのテーブルへ複数の主キ...
-
CakePHPでquery()を使うときに...
-
MySQLのINSERT時にたまに重複に...
-
printfの表示結果の配置がうま...
-
mysqlから取得した配列をカンマ...
-
時刻型にNULLでセットしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
トランザクション処理
-
csvをDBへ読み込んだら、NULLが...
-
ヒアドキュメントでSQLを書く事...
-
変数にNULLを代入したい
-
【PHPとDBの連動】時刻表作成
-
php sqlite count 列数取得
-
OracleからAccessへのインポート
-
RFC822形式での日時の取得
-
MySqlのテーブルのサイズを取得...
-
MDB2エラーが対応出来ません。
-
セレクト文について
-
クエリObjectをforeachで回す時...
-
会員サイトでログイン後の会員...
-
月毎の集計値を同じデータグリ...
-
PHPでフォームからデータDBに書...
-
DB Error: no such field
-
出勤表の作り方
-
phpでテーブルを作る際変数によ...
-
SQL CASE 文について
おすすめ情報