none
ExecuteReader がエラーになってしまう。 RRS feed

  • 質問

  • こんばんは、VB2008初心者です。

    VB2008でACCESSデータベースにアクセスするためにOLEDBを使用していますが
    ExecuteReader がエラーになってしまう症状で困っています。

    以下のようなソースとなっています。

            Dim objLC_dbconnect As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
                                           "D:\AAAA\商品管理.mdb")
            Dim objLC_dbcommand As New OleDb.OleDbCommand
            Dim DATA_REC As OleDb.OleDbDataReader

            SQL = vbNullString
            SQL = SQL & "SELECT * " & vbCrLf
            SQL = SQL & "FROM 商品マスタ " & vbCrLf
            SQL = SQL & "WHERE 商品コード = '" & strHINCODE & "'"

            objLC_dbcommand.Connection = objLC_dbconnect
            objLC_dbconnect.Open()
            objLC_dbcommand.CommandText = SQL

            DATA_REC = objLC_dbcommand.ExecuteReader()


    これを実行すると 
    DATA_REC = objLC_dbcommand.ExecuteReader() で下記のエラーが発生します

    「パス 'D:\BBBB\商品管理.mdb' は正しくありません。パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。」

     
    しかし、D:\AAAA\商品管理.mdb をdbconnectで設定しているのになぜD:\BBBB\商品管理.mdbになってしまうのでしょう?
     DBファイルは最初、
    D:\BBBB\においていたのですが、途中でD:\AAAA\に変更しました。

     ソースのどこにも
    D:\BBBB\なんて使われている部分がないのになぜでしょうか、どなたか原因が分かる方いらっしゃいましたらご教授ねがいます。
    2008年10月30日 14:42

回答

  • おかしいですね。パスが違う場合、通常はobjLC_dbconnect.Open() で上記に書かれたエラーが発生します。パスが違うのでオープンすることができないわけです。

    どのようにコードを実行されているのでしょうか?

    また、一度ブレークポイントを設定して、デバック実行にて1行づつ実行してみて下さい。

    2008年10月30日 15:27
    モデレータ

すべての返信

  • おかしいですね。パスが違う場合、通常はobjLC_dbconnect.Open() で上記に書かれたエラーが発生します。パスが違うのでオープンすることができないわけです。

    どのようにコードを実行されているのでしょうか?

    また、一度ブレークポイントを設定して、デバック実行にて1行づつ実行してみて下さい。

    2008年10月30日 15:27
    モデレータ
  • コードの実行は、デバッグ実行で確認しました。EXEをビルドしてもエラーになってしまいます。

    ExecuteReader行まではエラーは発生しません。

     

    デバッグ実行中にExecuteReaderでエラーとなったときの

    objLC_dbcommandのプロパティをチェックすると以下のようになっていました。

     

    objLC_dbcommand.Connection.ConnectionStringは

     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\AAAA\商品管理.mdb"

     

    objLC_dbcommand.Connection.DataSource

       "D:\AAAA\商品管理.mdb"

     

    となるので問題ないと思うのですが、不思議です・・・・・

     

    2008年11月3日 8:27
  • >DBファイルは最初、D:\BBBB\においていたのですが、途中でD:\AAAA\に変更しました。

     

    私は、この過程で、最初にアクセスした履歴か何か残っているのではないでしょうか

    元に戻せばOKとかね

    2008年11月3日 8:58
  • 回答していただいた皆さまありがとうございます。m(__)m

    自己解決できました。

     

    結論から言うと、VBが原因ではなく、accessのデータベース側に問題がありました。

    リンクテーブルを使っていましたがリンクテーブルの参照が古いフォルダーになっていました。

    そのせいでオープン時にはエラーにならず

    テーブルを参照したときにVBでエラーが出ていたようです。

     

    確認不足でした・・・・

    2008年11月3日 11:25