none
VC++2005MFCでAccess2000で作成したデータベースを操作する RRS feed

  • 質問

  • 現在VB6.0 DAOにて、Access2000で作成したデータベースを操作するプログラムを使用しています。これをVC++MFCの勉強用として置換えようとしているのですが、ヘルプを読んでもよくわかりません。CDaoDatabaseクラスを使えば何とかなるのかと思っていますが、どうもうまくいきません。
    どなたか、接続方法をお教えください。

    以上、よろしくお願いいたします。
    2009年5月28日 2:37

回答

  • 私がmdbファイルを操作する際はODBCドライバを使用します。
    簡単な手順
    1.CRecordsetの派生クラスを作成する。
    a.[プロジェクト]-[クラスの追加]-[MFC ODBC コンシューマ]を選択してMFC ODBC コンシューマ ウィザードを起動する。
    b.データソースを選択する。なければ新規作成する(ドライバは[Microsoft Access Driver (*.mdb)]を選択する)。
    c.データの操作を行うテーブルやクエリを選択する。
    ※データソースが作成されていないPCで作成したアプリを動作させたい場合、生成した派生クラスのGetDefaultConnect関数の戻り値を
     _T("Driver={Microsoft Access Driver (*.mdb)};DBQ=hogehoge.mdb;UID=admin;UserCommitSync=Yes;")
    に変更すると動作します。DBQはパスを含むmdbファイル名になります。

    2.生成したクラスを使用してテーブルにアクセスする。
    CHogehogeRs rs;
    try{
     rs.Open();
     // テーブルの参照,移動,追加,変更などを行う
     rs.Close();
    }
    catch ( CDBException* e )
    {
     // エラー処理
    }

    後はCRecordsetを参照してください。

    • 回答としてマーク B_Wolf 2009年6月12日 5:00
    2009年6月11日 7:21

すべての返信

  • 私がmdbファイルを操作する際はODBCドライバを使用します。
    簡単な手順
    1.CRecordsetの派生クラスを作成する。
    a.[プロジェクト]-[クラスの追加]-[MFC ODBC コンシューマ]を選択してMFC ODBC コンシューマ ウィザードを起動する。
    b.データソースを選択する。なければ新規作成する(ドライバは[Microsoft Access Driver (*.mdb)]を選択する)。
    c.データの操作を行うテーブルやクエリを選択する。
    ※データソースが作成されていないPCで作成したアプリを動作させたい場合、生成した派生クラスのGetDefaultConnect関数の戻り値を
     _T("Driver={Microsoft Access Driver (*.mdb)};DBQ=hogehoge.mdb;UID=admin;UserCommitSync=Yes;")
    に変更すると動作します。DBQはパスを含むmdbファイル名になります。

    2.生成したクラスを使用してテーブルにアクセスする。
    CHogehogeRs rs;
    try{
     rs.Open();
     // テーブルの参照,移動,追加,変更などを行う
     rs.Close();
    }
    catch ( CDBException* e )
    {
     // エラー処理
    }

    後はCRecordsetを参照してください。

    • 回答としてマーク B_Wolf 2009年6月12日 5:00
    2009年6月11日 7:21
  • myoko2さん、ありがとうございます。
    早速、試してみます。

    もし、何か参考になる書籍をご存知でしたら、お教えください。
    探してみたのですがVBなら見つかるのですが、VC++でデータベースを操作する参考書的なものが見つからなくて困っております。
    2009年6月11日 23:29
  • myoko2さん、ありがとうございました。
    初期の目的は達せられました。
    2009年6月12日 5:02
  • 一応解決はしたのですが、実機と開発機でmdbファイルの格納場所が違う場合、実機用にコンパイルする際に、GetDefaultConnect関数の戻り値の_T("Driver={Microsoft Access Driver (*.mdb)};DBQ=hogehoge.mdb;UID=admin;UserCommitSync=Yes;")のDBQのパスを変更すれば、実機ようとして動作するでしょうか。

    お教えください。
    2009年6月30日 1:33