マルチスレッドでMDB参照

[戻る]
ブギー [E-Mail] 2002/10/21(月) 14:34:08
こんにちわ、ブギーと申します。

Win32コンソールアプリケーションのマルチスレッドで、MDBの参照を
行いたいのですが、使い方がよくわからず困っています。

開発環境は以下のとおりです。
 Windows2000 Pro
 VC 6.0 SP4
 Access2000

はじめに、MSDNの「DAO レコードセット: レコードの動的バインディング」を
参考に、以下ようなサブルーチンを作成しました。
データを検索する為のキー情報を、パラメータで渡します。
単体での動作は問題なさそうでした。

BOOL subDataSearch(CString param)
{
    CDaoDatabase    db;
    CString       strSql;

    db.Open("test.mdb", FALSE, FALSE, "");
    CDaoRecordset rs(&db);

    /* 検索条件設定 */
    strSql = "SELECT a FROM b WHERE [c] = \'" + param + "\'"
    rs.Open(strSql);

    if(FALSE == rs.IsEOF())
    {
        rs.GetFieldValue("d", var);
           :
           :
    }
    rs.Close();
    db.Close();
}

このサブルーチンを、2つのスレッドから任意のタイミングで
コールしたいのですが、あとからコールした方の、db.Open()
ところでAccess Violationがおきます。

こういった使い方をする場合の手続きが何か足りないのだとは
思いますが、何をどうしたら良いのか、MSDNをみていても
わかりません。

どなたか、アドバイスをお願い致します。

EIJI 2002/10/21(月) 14:40:27
オープンする前に AfxDaoInit() を呼んでみてください。

ブギー [E-Mail] 2002/10/21(月) 15:27:17
[[解決]]
こんにちわ、ブギーです。

EIJIさん、ありがとうございます!
解決しました!!

古いスレッドには追加発言できません。