新規会員登録における電話番号登録必須化のお知らせ

EXCELVBAでSQLserverからデータをひっぱってきてエクセルにクエリの結果を表示させています。
クエリのコードが短い場合は問題ないのですが、
長くなると、時間切れのメッセージが出てうまくできません。
クエリ自体は長いですが、誤りはありません。
クエリが複雑すぎたり長すぎたりするとだめなのでしょうか。
ご教授ください。宜しくお願い致します。

*************エラーメッセージ***************
実行時エラー'2147217871(80040e31)':
時間切れになりました。
********************************************


Sub test()

Const connstr = "Provider=sqloledb;" & _
"Data Source=サーバ名;Initial Catalog=DB名;UserId=ユーザ名;Password=パスワード; "

Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String

strSQL = "SELECT …ここのクエリ文が長い…"

conn.Open connstr
rs.Open strSQL, conn

Range("A2").CopyFromRecordset rs

rs.Close
conn.Close

End Sub

教えて!goo グレード

A 回答 (3件)

conn.Open connstr



'ここに
conn.CommandTimeout = 120

rs.Open strSQL, conn

2分でタイムアウト

conn.CommandTimeout = 0
にするとタイムアウトはなくなります。
1時間でも2時間でも、死ぬまで・・・

どうでしょうか

この回答への補足

回答ありがとうございます。
早速以下のように変更しましたが、
30秒ほどで同じエラーになりました。

conn.CommandTimeout = 0

これはなぜでしょうか。

補足日時:2007/09/19 17:33
    • good
    • 0

ちょっと、気になったのですが、



そもそも、クエリによって、読み込まれた。
データは約65000件以下ですよね。

たまに、膨大なデータを読み込もうとして、
エラーしている人が、いるようですが。老婆心ですが、

あと、sqlにlimitを、つけて、読み込みデータ数を
少なく制限して、実行してみるとか、

いろいろ、確認することが、あると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
EXCELをつかわずにSQLserver側で実行すると問題ないので、
クエリには問題がないようです。時間はかかりますが。
また、データは100件を指定しているので、
データ量が多すぎということはないと思います。
宜しくお願い致します。

お礼日時:2007/09/19 23:06

接続時のタイムアウトの時間を延ばしてみてください。


以下のURLが結構色々やっているようです。

参考URL:http://www.accessclub.jp/bbs6/0005/das1089.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせていただきます。

お礼日時:2007/09/20 10:42

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

人気Q&Aランキング