none
DB接続時とデータベースエクスプローラについて RRS feed

  • 質問

  • VB2005でAccess2000のDBを接続しました。

    、「予期せぬエラーtable_***」という表示が出現しましたが、気にしないでOKボタンをました。

    その後、データベースエクスプローラからTableやクエリを追加しようと選択すると「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが表示し追加できません。

     

    検索し同じ質問が見つかりましたが、解決方法が載っていないため投稿しました。

    どのように解決すれば良いのか教えてください。

     

    以下、過去の質問

    http://social.msdn.microsoft.com/Forums/ja-JP/vstoja/thread/49bde644-17dd-465a-9c0a-350d1bb2bcbd
    2011年6月28日 8:53

回答

  • 外しているかもしれませんが、以下が該当しませんでしょうか?

    Access データベースでの作業時に使用すべきでない特殊文字
    http://support.microsoft.com/kb/826763

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年8月1日 6:22
    2011年6月28日 14:31
    モデレータ

すべての返信

  • > オブジェクト参照がオブジェクトインスタンスに設定されていません
    は必要なオブジェクトができてないからだと思いますが、
    > 「予期せぬエラーtable_***」という表示が出現しましたが、気にしないでOKボタンをました。
    を解決しないと解決しないとおもいますよ。

    で、何でそうなるのかはちゃんと予期せぬエラーの内容見て判断しないといけないとおもいます。

    2011年6月28日 10:09
  •  

    mars12さん

    回答ありがとうございます。

    オブジェクトができていないってことは,コンピュータ上に必要なメモリが足らないってことが原因と考えてもいいでしょうか?

    自宅のPCでVB2010とSQL2010に接続したところエラーがなくtableを追加できたので・・・

     

    「予期しないエラー」の内容はAccess2000で作成したTable名でした。

    しかし、Tableの何が原因なのか考慮しましたが結局判りませんでした。

     

    ただし、SQL2008をインストールする前でVB2005にAccess2000を接続したところ

    クリエのSQL文にエラーが生じました。

    SQL2008をインストールしたので解決出来ましたが、

    現在問題であるTableのエラーについては検討がつきません。

     

    2011年6月28日 10:37
  • 外しているかもしれませんが、以下が該当しませんでしょうか?

    Access データベースでの作業時に使用すべきでない特殊文字
    http://support.microsoft.com/kb/826763

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    • 回答としてマーク 山本春海 2011年8月1日 6:22
    2011年6月28日 14:31
    モデレータ
  • > オブジェクトができていないってことは,コンピュータ上に必要なメモリが足らないってことが原因と考えてもいいでしょうか?
    多分違います。

    > 「予期せぬエラーtable_***」
    は、これしか出ていないんでしょうか。他にエラーコードみたいなのは出ないでしょうか。
    、さすがにこれだけではわからないですね。

    どのタイミングでエラーが出ているのかわかりませんが、たとえば

    System.Data.OleDb.OleDbConnection con = null; // 接続
    string mdbPath = @"C:\temp\db1.mdb"; // 接続
    
    // Accessに接続
    try
    {
     if (con == null)
     {
      con = new System.Data.OleDb.OleDbConnection();
     }
    
     String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;
     con.ConnectionString = connectionString;
    
     con.Open();
    }
    catch (Exception ex)
    {
     MessageBox.Show(ex.Message);
    }
    finally
    {
     if (con != null)
     {
      con.Close();
     }
    }
    

     


    みたいに接続したときエラーになりますか?
    とりあえず手元の XP SP3(32bit) + Access2000 のmdbでは問題なさそうでした。
    なんか64itだとだめだとかあった気がします。

    すいません、ここVB.NETでしたね
    • 編集済み mars12 2011年6月29日 1:09 追記
    • 回答の候補に設定 山本春海 2011年8月1日 6:23
    2011年6月29日 0:36
  • trapemiyaさん

     

    返信遅れて申し訳ありません。

    回答有難うございます。

    念のためTable名やフィールド名に特殊文字を使用している可能性があるので明日、確認します。

    「予期しないエラーです」はこれが原因かもしれないので・・・

     

    しかし、「オブジェクト参照がオブジェクトインスタンスに設定されていません」のエラーは該当しないと思います。

    なぜなら、Access2000のデータベースの代用としてVB2005に付随しているSQLデータベースを追加したところ同様なエラーが表示されたからです。

    2011年6月29日 12:30
  • mars12さん

     

    回答有難うございます。

     

    「予期しないエラー」の他に以下のエラーコードがありました。

    「データベースオブジェクトを処理しているときエラーが発生した」

    trapemiyaさんがの回答が該当しているかもしれません。

     

    念のためmars12さんが回答したソースコードで接続して結果をみます。

     

     

     

     

     


    2011年6月29日 12:47
  • Accessが有るのでしたら該当ファイルに最適化と修復を施してみてはいかがでしょうか。

    またjetcompを試すことも考えられます。

    http://support.microsoft.com/kb/273956/ja

     


    http://systemartlaboratory.com/
    • 回答の候補に設定 山本春海 2011年8月1日 6:23
    2011年7月11日 12:16