none
ODBC接続エラー RRS feed

  • 質問

  • 今夏、お客先にWindowsServer2008R2 & SQL Server2008 を導入ました。

    【質問】

    ACCESSのVBAでループの中で、SQLのSELECT文を発行して320回目くらいでODBC接続エラーが表示されます。セッションが切断されていない状態で次のSQLが発行され最大アクセス数をオーパーしているのか?、デバッグエラー表示後再開すると正常終了しました。

    レコード読込みに関する設定値(デフォルト値)等があるのでしょうか?

    回避策についてお教え願います。

    2011年12月5日 4:46

回答

  • こんにちは、sou02rea28 さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

    みなさんからのアドバイスにあるように、ここまでの流れでは SQL Server に特化した内容というよりも、Access VBA コードに関してお話を勧めた方がいいようですので、後ほど私の方でこちらのスレッドを以下のカテゴリに移動させていただくことが可能です。

    Visual Basic for Application(VBA) カテゴリ
    http://social.msdn.microsoft.com/Forums/ja-JP/vbajp/threads

    また、アドバイスいただいているように、質問者が実担当の方でないと話がすれ違ってしまうとも考えられるので、実担当の方が直接ご質問を投稿いただけるということであれば、こちらのスレッドは終了して、上記カテゴリのほうに新規にご質問を投稿されたほうがいいかもしれないですね。
    一度ご連絡いただければと思います。よろしくお願いいたします。
                                                                   
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海


    2011年12月6日 2:49

すべての返信

  • SQL Serverに何らかの制限があるのではなく、質問者さんの書いたAccess VBAのコードに問題があると思われます。
    2011年12月5日 5:48
  • まず、ODBC接続エラーってのが具体的に何なのか分からないとはっきり回答できないですけど、内容を聞いた限りメモリリークが怪しい気がしますね。

    2011年12月5日 5:53
  • 返信ありがとうございます。

    「Access VBAのコードに問題があると?」

    「Access VBA」の知識がなく申訳ないですが、どういう観点でAccess VBAのコードを読んだら良いでしょうか?

    2011年12月5日 5:57
  • 観点も何も。エラーが発生するならエラー内容を確認することからですし、エラー内容が確認されていないということは、エラー処理がされていないコードなのでしょう。

    320回程度だけ動く(言い換えれは動くときだけ動く)コードと、動き続けるコードとでは書き方が違います。

    2011年12月5日 6:21
  • ACCESSのVBAでループの中で、SQLのSELECT文を発行して320回目くらいでODBC接続エラーが表示されます。

    ループ中で320回以上select文を発行しているように読み取れます。通常、そのような書き方は良くない場合が多いので見直した方が良いと思いますが、どのようなコードを書かれていますか? VBAについてあまり詳しくないと書かれていますので、できればそのコードを掲載していただいた方が解決に早く近づくと思います。掲載される際には、セキュリティ上問題となる部分を伏字にするなどの対策を忘れずにお願いします。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年12月5日 7:29
  • 小生、知識がなく申訳ありません。

    コードを入手しましたので開示します。お手数ですが下記コードの

    Set rst4 = dbs.OpenRecordset(strSQL) でエラーとなっています。ご教授お願いいたします。
    -------------------------------------------------------------------------------------------

    strSQL = "SELECT a.名称識別区分 FROM dbo_ERP勘定科目マスタ as a " & _
                                        "WHERE (((a.勘定科目コード)=""" & kj_cd & """));"
    Set rst4 = dbs.OpenRecordset(strSQL)
    If rst4.RecordCount = 0

    Then
      !細目識別区分 = String(4, " ")
    Else
        !細目識別区分 = rst4!名称識別区分 & String(4 - Len(Nz(rst4!名称識別区分)), " ")
    End If

    2011年12月6日 0:59
  • 根本的な問題が2点あります。

    まず、最初から指摘している通りSQL Serverの問題ではないと予想しています。Access VBAで書かれたコード(入手されたコードであっています)の問題だと思われます。となるとSQL Serverのフォーラムで扱うのは不適切です。
    # これについてはモデレーターの方が適切なフォーラムへ移動してくれるかもしれません。 

    次に、このフォーラムは開発者のために議論する場です。開発者以外の方が、他の方から入手されたコードについて議論するのは困難です。開発者ご自身が質問されるべきです。見当はずれな「レコード読込みに関する設定値(デフォルト値)等があるのでしょうか」という見解になっているのもそのためだと思われます。

    2011年12月6日 1:13
  • こんにちは、sou02rea28 さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。

    みなさんからのアドバイスにあるように、ここまでの流れでは SQL Server に特化した内容というよりも、Access VBA コードに関してお話を勧めた方がいいようですので、後ほど私の方でこちらのスレッドを以下のカテゴリに移動させていただくことが可能です。

    Visual Basic for Application(VBA) カテゴリ
    http://social.msdn.microsoft.com/Forums/ja-JP/vbajp/threads

    また、アドバイスいただいているように、質問者が実担当の方でないと話がすれ違ってしまうとも考えられるので、実担当の方が直接ご質問を投稿いただけるということであれば、こちらのスレッドは終了して、上記カテゴリのほうに新規にご質問を投稿されたほうがいいかもしれないですね。
    一度ご連絡いただければと思います。よろしくお願いいたします。
                                                                   
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海


    2011年12月6日 2:49